New upstream version 3.6.8~git20231027.1549d8c
authorMathieu Malaterre <malat@debian.org>
Mon, 6 Nov 2023 08:21:23 +0000 (09:21 +0100)
committerMathieu Malaterre <malat@debian.org>
Mon, 6 Nov 2023 08:21:23 +0000 (09:21 +0100)
894 files changed:
CMake/3rdparty.cmake
CMake/FindICU.cmake
CMake/GenerateDCMTKConfigure.cmake
CMake/dcmtk.pc.in
CMake/dcmtkMacros.cmake
CMake/dcmtkPrepare.cmake
CMake/dcmtkTryRun.cmake
CMake/dcmtkUseAndroidSDK.cmake
CMake/dcmtkUseWine.cmake
CMake/osconfig.h.in
CMakeLists.txt
COPYRIGHT
INSTALL
config/configure
config/configure.in
config/confmod
config/docs/cxx11.dox
config/docs/macros.txt
config/include/dcmtk/config/osconfig.h.in
dcmdata/apps/dcm2json.cc
dcmdata/apps/dcm2pdf.cc
dcmdata/apps/dcm2xml.cc
dcmdata/apps/dcmconv.cc
dcmdata/apps/dcmcrle.cc
dcmdata/apps/dcmdrle.cc
dcmdata/apps/dcmdump.cc
dcmdata/apps/dump2dcm.cc
dcmdata/apps/img2dcm.cc
dcmdata/apps/mdfconen.cc
dcmdata/apps/xml2dcm.cc
dcmdata/data/dicom.dic
dcmdata/docs/cda2dcm.man
dcmdata/docs/dcm2json.man
dcmdata/docs/dcm2pdf.man
dcmdata/docs/dcm2xml.man
dcmdata/docs/dcmconv.man
dcmdata/docs/dcmcrle.man
dcmdata/docs/dcmdrle.man
dcmdata/docs/dcmdump.man
dcmdata/docs/dcmftest.man
dcmdata/docs/dcmgpdir.man
dcmdata/docs/dcmodify.man
dcmdata/docs/dump2dcm.man
dcmdata/docs/img2dcm.man
dcmdata/docs/pdf2dcm.man
dcmdata/docs/stl2dcm.man
dcmdata/docs/xml2dcm.man
dcmdata/include/dcmtk/dcmdata/dccodec.h
dcmdata/include/dcmtk/dcmdata/dcddirif.h
dcmdata/include/dcmtk/dcmdata/dcdeftag.h
dcmdata/include/dcmtk/dcmdata/dcdicent.h
dcmdata/include/dcmtk/dcmdata/dcdict.h
dcmdata/include/dcmtk/dcmdata/dcdirrec.h
dcmdata/include/dcmtk/dcmdata/dcelem.h
dcmdata/include/dcmtk/dcmdata/dchashdi.h
dcmdata/include/dcmtk/dcmdata/dcitem.h
dcmdata/include/dcmtk/dcmdata/dcostrmf.h
dcmdata/include/dcmtk/dcmdata/dcpath.h
dcmdata/include/dcmtk/dcmdata/dcpcache.h
dcmdata/include/dcmtk/dcmdata/dctag.h
dcmdata/include/dcmtk/dcmdata/dctagkey.h
dcmdata/include/dcmtk/dcmdata/dcuid.h
dcmdata/include/dcmtk/dcmdata/dcvrdt.h
dcmdata/include/dcmtk/dcmdata/dcxfer.h
dcmdata/libdcxml/xml2dcm.cc
dcmdata/libsrc/dccodec.cc
dcmdata/libsrc/dcddirif.cc
dcmdata/libsrc/dcdicdir.cc
dcmdata/libsrc/dcdict.cc
dcmdata/libsrc/dcdictbi.cc
dcmdata/libsrc/dcdirrec.cc
dcmdata/libsrc/dcelem.cc
dcmdata/libsrc/dcencdoc.cc
dcmdata/libsrc/dcfilefo.cc
dcmdata/libsrc/dcitem.cc
dcmdata/libsrc/dcjson.cc
dcmdata/libsrc/dcmetinf.cc
dcmdata/libsrc/dcostrmb.cc
dcmdata/libsrc/dcostrmf.cc
dcmdata/libsrc/dcostrms.cc
dcmdata/libsrc/dcpath.cc
dcmdata/libsrc/dcpcache.cc
dcmdata/libsrc/dcpixel.cc
dcmdata/libsrc/dcpixseq.cc
dcmdata/libsrc/dcpxitem.cc
dcmdata/libsrc/dcsequen.cc
dcmdata/libsrc/dctag.cc
dcmdata/libsrc/dcuid.cc
dcmdata/libsrc/dcxfer.cc
dcmdata/tests/CMakeLists.txt
dcmdata/tests/Makefile.in
dcmdata/tests/tests.cc
dcmdata/tests/tnewdcme.cc
dcmdata/tests/ttag.cc [new file with mode: 0644]
dcmect/tests/t_huge_concat.cc
dcmect/tests/t_roundtrip.cc
dcmimage/apps/dcm2pnm.cc
dcmimage/apps/dcmicmp.cc
dcmimage/apps/dcmquant.cc
dcmimage/apps/dcmscale.cc
dcmimage/docs/dcm2pnm.man
dcmimage/docs/dcmicmp.man
dcmimage/docs/dcmquant.man
dcmimage/docs/dcmscale.man
dcmimage/libsrc/dcmicmph.cc
dcmiod/libsrc/iodutil.cc
dcmjpeg/apps/dcmcjpeg.cc
dcmjpeg/apps/dcmdjpeg.cc
dcmjpeg/docs/dcmcjpeg.man
dcmjpeg/docs/dcmdjpeg.man
dcmjpeg/docs/dcmj2pnm.man
dcmjpeg/docs/dcmmkdir.man
dcmjpeg/libsrc/djcodecd.cc
dcmjpls/apps/dcmcjpls.cc
dcmjpls/apps/dcmdjpls.cc
dcmjpls/docs/dcmcjpls.man
dcmjpls/docs/dcmdjpls.man
dcmjpls/docs/dcml2pnm.man
dcmjpls/libcharls/header.cc
dcmjpls/libsrc/djcodece.cc
dcmnet/apps/dcmrecv.cc
dcmnet/apps/echoscu.cc
dcmnet/apps/storescp.cc
dcmnet/apps/storescu.cc
dcmnet/docs/asconfig.txt
dcmnet/docs/dcmrecv.man
dcmnet/docs/echoscu.man
dcmnet/docs/findscu.man
dcmnet/docs/movescu.man
dcmnet/docs/storescp.man
dcmnet/docs/storescu.man
dcmnet/etc/storescp.cfg
dcmnet/etc/storescu.cfg
dcmnet/include/dcmtk/dcmnet/dcasccfg.h
dcmnet/include/dcmtk/dcmnet/dimse.h
dcmnet/include/dcmtk/dcmnet/scp.h
dcmnet/include/dcmtk/dcmnet/scu.h
dcmnet/libsrc/assoc.cc
dcmnet/libsrc/dstorscu.cc
dcmnet/libsrc/dulfsm.cc
dcmnet/libsrc/scp.cc
dcmnet/libsrc/scu.cc
dcmnet/tests/tscuscp.cc
dcmpmap/libsrc/dpmparametricmapiod.cc
dcmpstat/apps/dcmmkcrv.cc
dcmpstat/apps/dcmmklut.cc
dcmpstat/apps/dcmp2pgm.cc
dcmpstat/apps/dcmprscp.cc
dcmpstat/apps/dcmprscu.cc
dcmpstat/apps/dcmpschk.cc
dcmpstat/apps/dcmpsmk.cc
dcmpstat/apps/dcmpsprt.cc
dcmpstat/apps/dcmpsrcv.cc
dcmpstat/apps/dcmpssnd.cc
dcmpstat/docs/dcmmkcrv.man
dcmpstat/docs/dcmmklut.man
dcmpstat/docs/dcmp2pgm.man
dcmpstat/docs/dcmprscp.man
dcmpstat/docs/dcmprscu.man
dcmpstat/docs/dcmpschk.man
dcmpstat/docs/dcmpsmk.man
dcmpstat/docs/dcmpsprt.man
dcmpstat/docs/dcmpstat.dox
dcmpstat/etc/dcmpstat.cfg
dcmpstat/libsrc/dviface.cc
dcmpstat/libsrc/dvpsga.cc
dcmpstat/libsrc/dvpspr.cc
dcmpstat/libsrc/dvpsprt.cc
dcmpstat/libsrc/dvpsril.cc
dcmpstat/libsrc/dvpssvl.cc
dcmqrdb/docs/dcmqrscp.man
dcmqrdb/etc/dcmqrprf.cfg
dcmqrdb/include/dcmtk/dcmqrdb/dcmqrsrv.h
dcmqrdb/libsrc/dcmqrdbi.cc
dcmqrdb/libsrc/dcmqrsrv.cc
dcmrt/apps/Makefile.dep
dcmrt/apps/drtdump.cc
dcmrt/docs/drtdump.man
dcmrt/include/dcmtk/dcmrt/drmimage.h
dcmrt/include/dcmtk/dcmrt/drtdose.h
dcmrt/include/dcmtk/dcmrt/drtimage.h
dcmrt/include/dcmtk/dcmrt/drtionpl.h
dcmrt/include/dcmtk/dcmrt/drtiontr.h
dcmrt/include/dcmtk/dcmrt/drtplan.h
dcmrt/include/dcmtk/dcmrt/drtstrct.h
dcmrt/include/dcmtk/dcmrt/drttreat.h
dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtads.h
dcmrt/include/dcmtk/dcmrt/seq/drtafcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
dcmrt/include/dcmtk/dcmrt/seq/drtags.h
dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtancs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtarms.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtars.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
dcmrt/include/dcmtk/dcmrt/seq/drtas2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtas3.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtas4.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtas5.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtas6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtas7.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtass.h
dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtbl1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
dcmrt/include/dcmtk/dcmrt/seq/drtblds2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtces.h
dcmrt/include/dcmtk/dcmrt/seq/drtcgis.h
dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtcsrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
dcmrt/include/dcmtk/dcmrt/seq/drtcttcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtcvcss.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtcvdas.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtcvis.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtdccs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdcvs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtdddps.h
dcmrt/include/dcmtk/dcmrt/seq/drtddps.h
dcmrt/include/dcmtk/dcmrt/seq/drtdfss.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtds.h
dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
dcmrt/include/dcmtk/dcmrt/seq/drtdtcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
dcmrt/include/dcmtk/dcmrt/seq/drteas.h
dcmrt/include/dcmtk/dcmrt/seq/drteblds.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drteblos.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
dcmrt/include/dcmtk/dcmrt/seq/drtecvis.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtecvs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtes.h
dcmrt/include/dcmtk/dcmrt/seq/drtfbdds.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
dcmrt/include/dcmtk/dcmrt/seq/drtgas.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtgas1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtgas2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtgas3.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtgas4.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtgas5.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtgas6.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtgmcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtgms.h
dcmrt/include/dcmtk/dcmrt/seq/drtgpis.h
dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
dcmrt/include/dcmtk/dcmrt/seq/drtians.h
dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
dcmrt/include/dcmtk/dcmrt/seq/drticps.h
dcmrt/include/dcmtk/dcmrt/seq/drtics.h
dcmrt/include/dcmtk/dcmrt/seq/drtidcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
dcmrt/include/dcmtk/dcmrt/seq/drtlsds1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtlsds2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
dcmrt/include/dcmtk/dcmrt/seq/drtmris.h
dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
dcmrt/include/dcmtk/dcmrt/seq/drtmttcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
dcmrt/include/dcmtk/dcmrt/seq/drtnmas.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
dcmrt/include/dcmtk/dcmrt/seq/drtois.h
dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
dcmrt/include/dcmtk/dcmrt/seq/drtos.h
dcmrt/include/dcmtk/dcmrt/seq/drtosirs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtpasms.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtpass.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpbdds.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtpbdos.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpdeds.h
dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
dcmrt/include/dcmtk/dcmrt/seq/drtplos.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpros.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
dcmrt/include/dcmtk/dcmrt/seq/drtras.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbas1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrbdgs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbos2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrbos3.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrbs1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
dcmrt/include/dcmtk/dcmrt/seq/drtrbs3.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrbss.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrdais.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrdcks.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrdps.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs3.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
dcmrt/include/dcmtk/dcmrt/seq/drtrdsis.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
dcmrt/include/dcmtk/dcmrt/seq/drtris.h
dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
dcmrt/include/dcmtk/dcmrt/seq/drtrmss1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrmss2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrpprs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
dcmrt/include/dcmtk/dcmrt/seq/drtrris2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrris3.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrshs1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrshs2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
dcmrt/include/dcmtk/dcmrt/seq/drtrtps1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrtps2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrtps3.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrtps4.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrtrs1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drtrvcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
dcmrt/include/dcmtk/dcmrt/seq/drtscs.h
dcmrt/include/dcmtk/dcmrt/seq/drtscvs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
dcmrt/include/dcmtk/dcmrt/seq/drtsins.h
dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtspgis.h
dcmrt/include/dcmtk/dcmrt/seq/drtsppcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drtsptcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtss.h
dcmrt/include/dcmtk/dcmrt/seq/drtssrcs.h
dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtsss.h
dcmrt/include/dcmtk/dcmrt/seq/drttms0.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drttms1.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drttms2.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drttms9.h [deleted file]
dcmrt/include/dcmtk/dcmrt/seq/drttrccs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drttrtcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
dcmrt/include/dcmtk/dcmrt/seq/drttscs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
dcmrt/include/dcmtk/dcmrt/seq/drtttrcs.h [new file with mode: 0644]
dcmrt/include/dcmtk/dcmrt/seq/drttts.h
dcmrt/include/dcmtk/dcmrt/seq/drtudis.h
dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
dcmrt/include/dcmtk/dcmrt/seq/drtws.h
dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
dcmrt/libsrc/CMakeLists.txt
dcmrt/libsrc/Makefile.dep
dcmrt/libsrc/Makefile.in
dcmrt/libsrc/drmimage.cc
dcmrt/libsrc/drtaadcs.cc
dcmrt/libsrc/drtadcs.cc
dcmrt/libsrc/drtads.cc
dcmrt/libsrc/drtafcs.cc [new file with mode: 0644]
dcmrt/libsrc/drtafs.cc
dcmrt/libsrc/drtags.cc
dcmrt/libsrc/drtajcs.cc
dcmrt/libsrc/drtancs.cc [new file with mode: 0644]
dcmrt/libsrc/drtarms.cc [new file with mode: 0644]
dcmrt/libsrc/drtars.cc [new file with mode: 0644]
dcmrt/libsrc/drtas1.cc
dcmrt/libsrc/drtas2.cc [new file with mode: 0644]
dcmrt/libsrc/drtas3.cc [new file with mode: 0644]
dcmrt/libsrc/drtas4.cc [new file with mode: 0644]
dcmrt/libsrc/drtas5.cc [deleted file]
dcmrt/libsrc/drtas6.cc [deleted file]
dcmrt/libsrc/drtas7.cc [deleted file]
dcmrt/libsrc/drtass.cc
dcmrt/libsrc/drtbads.cc
dcmrt/libsrc/drtbas.cc
dcmrt/libsrc/drtbcps.cc
dcmrt/libsrc/drtbl1.cc [new file with mode: 0644]
dcmrt/libsrc/drtbl2.cc
dcmrt/libsrc/drtbl5.cc [deleted file]
dcmrt/libsrc/drtbldls.cc
dcmrt/libsrc/drtbldps.cc
dcmrt/libsrc/drtblds1.cc
dcmrt/libsrc/drtblds2.cc [new file with mode: 0644]
dcmrt/libsrc/drtblds5.cc [deleted file]
dcmrt/libsrc/drtblds6.cc [deleted file]
dcmrt/libsrc/drtbldts.cc
dcmrt/libsrc/drtbrcss.cc
dcmrt/libsrc/drtbrdrs.cc
dcmrt/libsrc/drtbrs.cc
dcmrt/libsrc/drtbs.cc
dcmrt/libsrc/drtbss.cc
dcmrt/libsrc/drtbvcps.cc
dcmrt/libsrc/drtcbars.cc
dcmrt/libsrc/drtccs.cc
dcmrt/libsrc/drtcctus.cc
dcmrt/libsrc/drtcdrs.cc
dcmrt/libsrc/drtces.cc
dcmrt/libsrc/drtcgis.cc
dcmrt/libsrc/drtchs.cc
dcmrt/libsrc/drtcims.cc
dcmrt/libsrc/drtcis.cc
dcmrt/libsrc/drtcncs.cc
dcmrt/libsrc/drtcos.cc
dcmrt/libsrc/drtcpas.cc
dcmrt/libsrc/drtcpis.cc
dcmrt/libsrc/drtcps.cc
dcmrt/libsrc/drtcs.cc
dcmrt/libsrc/drtcsas.cc
dcmrt/libsrc/drtcshs.cc
dcmrt/libsrc/drtcsis.cc
dcmrt/libsrc/drtcsrs.cc
dcmrt/libsrc/drtcss.cc
dcmrt/libsrc/drtcttcs.cc [new file with mode: 0644]
dcmrt/libsrc/drtcvcss.cc [new file with mode: 0644]
dcmrt/libsrc/drtcvdas.cc [new file with mode: 0644]
dcmrt/libsrc/drtcvis.cc [new file with mode: 0644]
dcmrt/libsrc/drtdccs.cc [new file with mode: 0644]
dcmrt/libsrc/drtdcs.cc
dcmrt/libsrc/drtdcvs.cc [new file with mode: 0644]
dcmrt/libsrc/drtdddps.cc
dcmrt/libsrc/drtddps.cc
dcmrt/libsrc/drtdfss.cc [new file with mode: 0644]
dcmrt/libsrc/drtdias.cc
dcmrt/libsrc/drtdimcs.cc
dcmrt/libsrc/drtdimrs.cc
dcmrt/libsrc/drtdirs.cc
dcmrt/libsrc/drtdose.cc
dcmrt/libsrc/drtdrs.cc
dcmrt/libsrc/drtds.cc
dcmrt/libsrc/drtdspcs.cc
dcmrt/libsrc/drtdss.cc
dcmrt/libsrc/drtdtcs.cc [new file with mode: 0644]
dcmrt/libsrc/drtdvhs.cc
dcmrt/libsrc/drtdvrrs.cc
dcmrt/libsrc/drteas.cc
dcmrt/libsrc/drteblds.cc [new file with mode: 0644]
dcmrt/libsrc/drteblos.cc [new file with mode: 0644]
dcmrt/libsrc/drtecs.cc
dcmrt/libsrc/drtecvis.cc [new file with mode: 0644]
dcmrt/libsrc/drtecvs.cc [new file with mode: 0644]
dcmrt/libsrc/drtes.cc
dcmrt/libsrc/drtfbdds.cc [new file with mode: 0644]
dcmrt/libsrc/drtfds.cc
dcmrt/libsrc/drtfes.cc
dcmrt/libsrc/drtfgs.cc
dcmrt/libsrc/drtfgss.cc
dcmrt/libsrc/drtfms.cc
dcmrt/libsrc/drtfsss.cc
dcmrt/libsrc/drtgas.cc [deleted file]
dcmrt/libsrc/drtgas1.cc [new file with mode: 0644]
dcmrt/libsrc/drtgas2.cc [new file with mode: 0644]
dcmrt/libsrc/drtgas3.cc [new file with mode: 0644]
dcmrt/libsrc/drtgas4.cc [new file with mode: 0644]
dcmrt/libsrc/drtgas5.cc [new file with mode: 0644]
dcmrt/libsrc/drtgas6.cc [new file with mode: 0644]
dcmrt/libsrc/drtgmcs.cc
dcmrt/libsrc/drtgms.cc
dcmrt/libsrc/drtgpis.cc
dcmrt/libsrc/drthsdrs.cc
dcmrt/libsrc/drtiais.cc
dcmrt/libsrc/drtians.cc
dcmrt/libsrc/drtiblds.cc
dcmrt/libsrc/drtibls.cc
dcmrt/libsrc/drtibs.cc
dcmrt/libsrc/drticpds.cc
dcmrt/libsrc/drticps.cc
dcmrt/libsrc/drtics.cc
dcmrt/libsrc/drtidcs.cc [new file with mode: 0644]
dcmrt/libsrc/drtiis.cc
dcmrt/libsrc/drtimage.cc
dcmrt/libsrc/drtionpl.cc
dcmrt/libsrc/drtiontr.cc
dcmrt/libsrc/drtipiqs.cc
dcmrt/libsrc/drtircs.cc
dcmrt/libsrc/drtiseis.cc
dcmrt/libsrc/drtitts.cc
dcmrt/libsrc/drtiwps.cc
dcmrt/libsrc/drtiws.cc
dcmrt/libsrc/drtlsds.cc
dcmrt/libsrc/drtlsds1.cc [new file with mode: 0644]
dcmrt/libsrc/drtlsds2.cc [new file with mode: 0644]
dcmrt/libsrc/drtlsds6.cc [deleted file]
dcmrt/libsrc/drtlsds7.cc [deleted file]
dcmrt/libsrc/drtmacds.cc
dcmrt/libsrc/drtmas.cc
dcmrt/libsrc/drtmdrs.cc
dcmrt/libsrc/drtmls.cc
dcmrt/libsrc/drtmps.cc
dcmrt/libsrc/drtmris.cc
dcmrt/libsrc/drtmss.cc
dcmrt/libsrc/drtmttcs.cc [new file with mode: 0644]
dcmrt/libsrc/drtmucs.cc
dcmrt/libsrc/drtnmas.cc [new file with mode: 0644]
dcmrt/libsrc/drtoas.cc
dcmrt/libsrc/drtois.cc
dcmrt/libsrc/drtopis.cc
dcmrt/libsrc/drtos.cc
dcmrt/libsrc/drtosirs.cc [new file with mode: 0644]
dcmrt/libsrc/drtpasms.cc [new file with mode: 0644]
dcmrt/libsrc/drtpass.cc [new file with mode: 0644]
dcmrt/libsrc/drtpbcs.cc
dcmrt/libsrc/drtpbdds.cc [new file with mode: 0644]
dcmrt/libsrc/drtpbdos.cc [new file with mode: 0644]
dcmrt/libsrc/drtpcs.cc
dcmrt/libsrc/drtpcxs.cc
dcmrt/libsrc/drtpdecs.cc
dcmrt/libsrc/drtpdeds.cc
dcmrt/libsrc/drtpfms.cc
dcmrt/libsrc/drtpics.cc
dcmrt/libsrc/drtplan.cc
dcmrt/libsrc/drtplos.cc [new file with mode: 0644]
dcmrt/libsrc/drtporcs.cc
dcmrt/libsrc/drtporis.cc
dcmrt/libsrc/drtppcs.cc
dcmrt/libsrc/drtpros.cc [new file with mode: 0644]
dcmrt/libsrc/drtprsis.cc
dcmrt/libsrc/drtpscs.cc
dcmrt/libsrc/drtpsics.cc
dcmrt/libsrc/drtpss.cc
dcmrt/libsrc/drtpsss.cc
dcmrt/libsrc/drtpvis.cc
dcmrt/libsrc/drtqds.cc
dcmrt/libsrc/drtras.cc
dcmrt/libsrc/drtrbas1.cc [new file with mode: 0644]
dcmrt/libsrc/drtrbas2.cc
dcmrt/libsrc/drtrbas8.cc [deleted file]
dcmrt/libsrc/drtrbdgs.cc [new file with mode: 0644]
dcmrt/libsrc/drtrbls.cc
dcmrt/libsrc/drtrbos1.cc
dcmrt/libsrc/drtrbos2.cc [new file with mode: 0644]
dcmrt/libsrc/drtrbos3.cc [new file with mode: 0644]
dcmrt/libsrc/drtrbos6.cc [deleted file]
dcmrt/libsrc/drtrbos7.cc [deleted file]
dcmrt/libsrc/drtrbs1.cc [new file with mode: 0644]
dcmrt/libsrc/drtrbs2.cc
dcmrt/libsrc/drtrbs3.cc [new file with mode: 0644]
dcmrt/libsrc/drtrbs4.cc [deleted file]
dcmrt/libsrc/drtrbs8.cc [deleted file]
dcmrt/libsrc/drtrbss.cc [new file with mode: 0644]
dcmrt/libsrc/drtrcdrs.cc
dcmrt/libsrc/drtrcos.cc
dcmrt/libsrc/drtrcps.cc
dcmrt/libsrc/drtrcs.cc
dcmrt/libsrc/drtrdais.cc [new file with mode: 0644]
dcmrt/libsrc/drtrdcks.cc [new file with mode: 0644]
dcmrt/libsrc/drtrdps.cc [new file with mode: 0644]
dcmrt/libsrc/drtrdros.cc [deleted file]
dcmrt/libsrc/drtrdrs1.cc
dcmrt/libsrc/drtrdrs2.cc [new file with mode: 0644]
dcmrt/libsrc/drtrdrs3.cc [new file with mode: 0644]
dcmrt/libsrc/drtrdrs6.cc [deleted file]
dcmrt/libsrc/drtrdrs8.cc [deleted file]
dcmrt/libsrc/drtrds.cc
dcmrt/libsrc/drtrdsis.cc [new file with mode: 0644]
dcmrt/libsrc/drtrecs.cc
dcmrt/libsrc/drtrfgs.cc
dcmrt/libsrc/drtrfors.cc
dcmrt/libsrc/drtrics.cc
dcmrt/libsrc/drtrims.cc
dcmrt/libsrc/drtris.cc
dcmrt/libsrc/drtrlsds.cc
dcmrt/libsrc/drtrmdrs.cc
dcmrt/libsrc/drtrms.cc
dcmrt/libsrc/drtrmss1.cc [new file with mode: 0644]
dcmrt/libsrc/drtrmss2.cc [new file with mode: 0644]
dcmrt/libsrc/drtrmss6.cc [deleted file]
dcmrt/libsrc/drtrmss7.cc [deleted file]
dcmrt/libsrc/drtrpcs.cc
dcmrt/libsrc/drtrpis.cc
dcmrt/libsrc/drtrppcs.cc
dcmrt/libsrc/drtrpphs.cc
dcmrt/libsrc/drtrpprs.cc [new file with mode: 0644]
dcmrt/libsrc/drtrpps.cc
dcmrt/libsrc/drtrppss.cc
dcmrt/libsrc/drtrps.cc
dcmrt/libsrc/drtrris1.cc
dcmrt/libsrc/drtrris2.cc [new file with mode: 0644]
dcmrt/libsrc/drtrris3.cc [new file with mode: 0644]
dcmrt/libsrc/drtrris6.cc [deleted file]
dcmrt/libsrc/drtrris9.cc [deleted file]
dcmrt/libsrc/drtrrms.cc
dcmrt/libsrc/drtrros.cc
dcmrt/libsrc/drtrrpcs.cc
dcmrt/libsrc/drtrrros.cc
dcmrt/libsrc/drtrrs.cc
dcmrt/libsrc/drtrrshs.cc
dcmrt/libsrc/drtrrtps.cc [deleted file]
dcmrt/libsrc/drtrrtps3.cc [deleted file]
dcmrt/libsrc/drtrrtps4.cc [deleted file]
dcmrt/libsrc/drtrrtps5.cc [deleted file]
dcmrt/libsrc/drtrscs.cc
dcmrt/libsrc/drtrsers.cc
dcmrt/libsrc/drtrses.cc
dcmrt/libsrc/drtrshs.cc
dcmrt/libsrc/drtrshs1.cc [new file with mode: 0644]
dcmrt/libsrc/drtrshs2.cc [new file with mode: 0644]
dcmrt/libsrc/drtrshs6.cc [deleted file]
dcmrt/libsrc/drtrshs7.cc [deleted file]
dcmrt/libsrc/drtrsis.cc
dcmrt/libsrc/drtrsns.cc
dcmrt/libsrc/drtrsos.cc
dcmrt/libsrc/drtrsrs.cc
dcmrt/libsrc/drtrss.cc
dcmrt/libsrc/drtrsss.cc
dcmrt/libsrc/drtrsts.cc
dcmrt/libsrc/drtrtps1.cc [new file with mode: 0644]
dcmrt/libsrc/drtrtps2.cc [new file with mode: 0644]
dcmrt/libsrc/drtrtps3.cc [new file with mode: 0644]
dcmrt/libsrc/drtrtps4.cc [new file with mode: 0644]
dcmrt/libsrc/drtrtrs1.cc [new file with mode: 0644]
dcmrt/libsrc/drtrtrs2.cc
dcmrt/libsrc/drtrtrs4.cc [deleted file]
dcmrt/libsrc/drtrvcs.cc [new file with mode: 0644]
dcmrt/libsrc/drtrvis.cc
dcmrt/libsrc/drtrws.cc
dcmrt/libsrc/drtrwvms.cc
dcmrt/libsrc/drtscris.cc
dcmrt/libsrc/drtscs.cc
dcmrt/libsrc/drtscvs.cc [new file with mode: 0644]
dcmrt/libsrc/drtsdcs.cc
dcmrt/libsrc/drtsds.cc
dcmrt/libsrc/drtshds.cc
dcmrt/libsrc/drtsins.cc
dcmrt/libsrc/drtsis.cc
dcmrt/libsrc/drtsns.cc
dcmrt/libsrc/drtspccs.cc
dcmrt/libsrc/drtspcs.cc
dcmrt/libsrc/drtspgis.cc
dcmrt/libsrc/drtsppcs.cc [new file with mode: 0644]
dcmrt/libsrc/drtsptcs.cc
dcmrt/libsrc/drtss.cc
dcmrt/libsrc/drtssrcs.cc
dcmrt/libsrc/drtssrs.cc
dcmrt/libsrc/drtsss.cc
dcmrt/libsrc/drtstrct.cc
dcmrt/libsrc/drttms0.cc [deleted file]
dcmrt/libsrc/drttms1.cc [new file with mode: 0644]
dcmrt/libsrc/drttms2.cc [new file with mode: 0644]
dcmrt/libsrc/drttms9.cc [deleted file]
dcmrt/libsrc/drttrccs.cc [new file with mode: 0644]
dcmrt/libsrc/drttreat.cc
dcmrt/libsrc/drttrtcs.cc [new file with mode: 0644]
dcmrt/libsrc/drttscds.cc
dcmrt/libsrc/drttscs.cc [new file with mode: 0644]
dcmrt/libsrc/drttsibs.cc
dcmrt/libsrc/drttsmds.cc
dcmrt/libsrc/drtttrcs.cc [new file with mode: 0644]
dcmrt/libsrc/drttts.cc
dcmrt/libsrc/drtudis.cc
dcmrt/libsrc/drtvls.cc
dcmrt/libsrc/drtwps.cc
dcmrt/libsrc/drtwrs.cc
dcmrt/libsrc/drtwrsrs.cc
dcmrt/libsrc/drtws.cc
dcmrt/libsrc/drtxrs.cc
dcmrt/tests/Makefile.dep
dcmseg/libsrc/segdoc.cc
dcmseg/tests/troundtrip.cc
dcmsign/apps/dcmsign.cc
dcmsign/docs/dcmsign.man
dcmsign/libsrc/dcsignat.cc
dcmsign/libsrc/simaccon.cc
dcmsr/apps/dsr2html.cc
dcmsr/apps/dsr2xml.cc
dcmsr/apps/dsrdump.cc
dcmsr/apps/xml2dsr.cc
dcmsr/docs/dsr2html.man
dcmsr/docs/dsr2xml.man
dcmsr/docs/dsrdump.man
dcmsr/docs/xml2dsr.man
dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
dcmsr/include/dcmtk/dcmsr/cmr/cid218.h
dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
dcmsr/include/dcmtk/dcmsr/cmr/cid247.h
dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
dcmsr/include/dcmtk/dcmsr/cmr/cid7551.h
dcmsr/include/dcmtk/dcmsr/codes/dcm.h
dcmsr/include/dcmtk/dcmsr/codes/ncit.h
dcmsr/include/dcmtk/dcmsr/codes/umls.h
dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
dcmsr/include/dcmtk/dcmsr/dsrsc3gr.h
dcmsr/include/dcmtk/dcmsr/dsrscogr.h
dcmsr/include/dcmtk/dcmsr/dsrtypes.h
dcmsr/include/dcmtk/dcmsr/dsrwavch.h
dcmsr/include/dcmtk/dcmsr/dsrwavvl.h
dcmsr/libcmr/cid100.cc
dcmsr/libcmr/cid10013.cc
dcmsr/libcmr/cid10033.cc
dcmsr/libcmr/cid11.cc
dcmsr/libcmr/cid218.cc
dcmsr/libcmr/cid244.cc
dcmsr/libcmr/cid247.cc
dcmsr/libcmr/cid29.cc
dcmsr/libcmr/cid4020.cc
dcmsr/libcmr/cid4021.cc
dcmsr/libcmr/cid4031.cc
dcmsr/libcmr/cid4031e.cc
dcmsr/libcmr/cid42.cc
dcmsr/libcmr/cid6147.cc
dcmsr/libcmr/cid7021.cc
dcmsr/libcmr/cid7181.cc
dcmsr/libcmr/cid7445.cc
dcmsr/libcmr/cid7452.cc
dcmsr/libcmr/cid7453.cc
dcmsr/libcmr/cid7464.cc
dcmsr/libcmr/cid7469.cc
dcmsr/libcmr/cid7551.cc
dcmsr/libsrc/dsrimgvl.cc
dcmsr/libsrc/dsrtypes.cc
dcmsr/libsrc/dsrwavvl.cc
dcmtls/docs/certstor.dox
dcmtls/docs/ciphers.txt
dcmtls/docs/dcmtls.dox
dcmtls/include/dcmtk/dcmtls/tlsciphr.h
dcmtls/include/dcmtk/dcmtls/tlscond.h
dcmtls/include/dcmtk/dcmtls/tlslayer.h
dcmtls/include/dcmtk/dcmtls/tlsopt.h
dcmtls/include/dcmtk/dcmtls/tlsscu.h
dcmtls/libsrc/tlsciphr.cc
dcmtls/libsrc/tlscond.cc
dcmtls/libsrc/tlsfmacr.h [new file with mode: 0644]
dcmtls/libsrc/tlslayer.cc
dcmtls/libsrc/tlsopt.cc
dcmtls/libsrc/tlsscu.cc
dcmtls/libsrc/tlstrans.cc
dcmtls/tests/tscuscptls.cc
dcmwlm/docs/wlmscpfs.man
dcmwlm/include/dcmtk/dcmwlm/wlds.h
dcmwlm/libsrc/wlds.cc
dcmwlm/libsrc/wldsfs.cc
dcmwlm/libsrc/wlfsim.cc
doxygen/manpages/man1/dcmrecv.1
oficonv/docs/mkcsmapper.man
oficonv/docs/mkesdb.man
oficonv/include/dcmtk/oficonv/iconv.h
oficonv/libsrc/citrus_hz.c
oficonv/libsrc/citrus_jisx0208.c
oficonv/libsrc/citrus_viqr.c
ofstd/include/dcmtk/ofstd/diag/arrybnds.def [new file with mode: 0644]
ofstd/include/dcmtk/ofstd/diag/restrict.def [new file with mode: 0644]
ofstd/include/dcmtk/ofstd/diag/stringop.def [new file with mode: 0644]
ofstd/include/dcmtk/ofstd/diag/useafree.def [new file with mode: 0644]
ofstd/include/dcmtk/ofstd/ofbmanip.h
ofstd/include/dcmtk/ofstd/ofcast.h
ofstd/include/dcmtk/ofstd/ofcond.h
ofstd/include/dcmtk/ofstd/ofdiag.h
ofstd/include/dcmtk/ofstd/oftypes.h
ofstd/include/dcmtk/ofstd/variadic/variant.h
ofstd/libsrc/ofchrenc.cc
ofstd/libsrc/ofstring.cc
ofstd/libsrc/ofxml.cc

index 47e34763b07588cde1b47869fda3ad21b16e70ae..ac0d15a8f11c23b173dd8643c7beaea7a85edb99 100644 (file)
@@ -1,12 +1,16 @@
 set(USE_FIND_PACKAGE_DOCS "Control whether libraries are searched via CMake's find_package() mechanism or a Windows specific fallback")
+# Advanced user (eg. vcpkg) may want to override this:
+if(NOT DEFINED DCMTK_USE_FIND_PACKAGE_WIN_DEFAULT)
+  set(DCMTK_USE_FIND_PACKAGE_WIN_DEFAULT FALSE)
+endif()
 if(WIN32)
-  # For Windows, we don't used FIND_PACKAGE because DCMTK usually is used with its
+  # For Windows, we don't use FIND_PACKAGE because DCMTK usually is used with its
   # own set of 3rd-party support libraries that can be downloaded from DCMTK's
   # website (pre-built).
   if(MINGW)
     set(DCMTK_USE_FIND_PACKAGE TRUE CACHE BOOL "${USE_FIND_PACKAGE_DOCS}")
   else()
-    set(DCMTK_USE_FIND_PACKAGE FALSE CACHE BOOL "${USE_FIND_PACKAGE_DOCS}")
+    set(DCMTK_USE_FIND_PACKAGE ${DCMTK_USE_FIND_PACKAGE_WIN_DEFAULT} CACHE BOOL "${USE_FIND_PACKAGE_DOCS}")
   endif()
 else()
   # Only find_package is supported
@@ -69,7 +73,7 @@ if(DCMTK_USE_FIND_PACKAGE)
       include(CheckCXXSourceCompiles)
       set(TEMP_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
       list(APPEND CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
-      CHECK_CXX_SOURCE_COMPILES("extern \"C\" {\n#include <openssl/ssl.h>\n}\nint main(){\n#if OPENSSL_VERSION_NUMBER < 0x10001000L\n#error OpenSSL too old\n#endif\n}\n" OPENSSL_VERSION_CHECK)
+      CHECK_CXX_SOURCE_COMPILES("extern \"C\" {\n#include <openssl/ssl.h>\n}\nint main(){\n#if OPENSSL_VERSION_NUMBER < 0x10002000L\n#error OpenSSL too old\n#endif\n}\n" OPENSSL_VERSION_CHECK)
       set(CMAKE_REQUIRED_INCLUDES "${TEMP_INCLUDES}")
       if(OPENSSL_VERSION_CHECK)
         message(STATUS "Info: DCMTK OPENSSL support will be enabled")
@@ -81,7 +85,7 @@ if(DCMTK_USE_FIND_PACKAGE)
           set(OPENSSL_LIBS ${OPENSSL_LIBS} dl)
         endif()
       else()
-        message(STATUS "Info: DCMTK OPENSSL support will be disabled: DCMTK requires OpenSSL version 1.0.1 or newer")
+        message(STATUS "Info: DCMTK OPENSSL support will be disabled: DCMTK requires OpenSSL version 1.0.2 or newer")
         set(DCMTK_WITH_OPENSSL OFF CACHE BOOL "" FORCE)
         set(WITH_OPENSSL "")
       endif()
@@ -243,7 +247,10 @@ else()
     if(WITH_LIBXMLINC)
       set(LIBXML_INCDIR "${WITH_LIBXMLINC}/include")
       set(LIBXML_LIBDIR "${WITH_LIBXMLINC}/lib")
-      set(LIBXML_LIBS debug "${LIBXML_LIBDIR}/libxml2_d.lib" optimized "${LIBXML_LIBDIR}/libxml2_o.lib" debug "${LIBXML_LIBDIR}/iconv_d.lib" optimized "${LIBXML_LIBDIR}/iconv_o.lib")
+      set(LIBXML_LIBS debug "${LIBXML_LIBDIR}/libxml2_d.lib" optimized "${LIBXML_LIBDIR}/libxml2_o.lib")
+      if (EXISTS "${LIBXML_LIBDIR}/iconv_o.lib")
+          set(LIBXML_LIBS ${LIBXML_LIBS} debug "${LIBXML_LIBDIR}/iconv_d.lib" optimized "${LIBXML_LIBDIR}/iconv_o.lib")
+      endif()
       message(STATUS "Info: DCMTK XML support will be enabled")
       set(WITH_LIBXML 1)
       # this hides some warnings that are emitted when linking against libxmlXXX.lib instead of linking the DLL directly
index 68045c9a1d64db8d3f6840a7198072234c87fffe..324e47d9818829b5c21ad8d7a0d831d56efa5ad8 100644 (file)
@@ -278,29 +278,28 @@ if(${ICU_PUBLIC_VAR_NS}_FOUND)
     set(${ICU_PUBLIC_VAR_NS}_LIBRARIES ${${ICU_PUBLIC_VAR_NS}_LIBRARY})
     set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS ${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR})
 
-    if(NOT CMAKE_VERSION VERSION_LESS "3.0.0")
-        if(NOT TARGET ICU::ICU)
-            add_library(ICU::ICU INTERFACE IMPORTED)
-        endif()
-        set_target_properties(ICU::ICU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}")
-        foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
-            string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
-            add_library("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" UNKNOWN IMPORTED)
-            if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE)
-                set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
-                set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_RELEASE "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE}")
-            endif()
-            if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG)
-                set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
-                set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_DEBUG "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG}")
-            endif()
-            if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY)
-                set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}")
-            endif()
-            set_property(TARGET ICU::ICU APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}")
-#             set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}")
-        endforeach()
+    if(NOT TARGET ICU::ICU)
+        add_library(ICU::ICU INTERFACE IMPORTED)
     endif()
+    set_target_properties(ICU::ICU PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}")
+    foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
+        string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
+        add_library("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" UNKNOWN IMPORTED)
+        if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE)
+            set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+            set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_RELEASE "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_RELEASE}")
+        endif()
+        if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG)
+            set_property(TARGET "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+            set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION_DEBUG "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY_DEBUG}")
+        endif()
+        if(${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY)
+            set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES IMPORTED_LOCATION "${${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_LIBRARY}")
+        endif()
+        set_property(TARGET ICU::ICU APPEND PROPERTY INTERFACE_LINK_LIBRARIES "ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}")
+#         set_target_properties("ICU::${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIR}")
+    endforeach()
+
 endif()
 
 mark_as_advanced(
index 0c4e91181c29c29675d03decee8b8fd9cf1e60a2..c432e0a4c54606d06c13fb27302ccefb43ccdfdd 100644 (file)
@@ -814,8 +814,7 @@ if(NOT DEFINED C_CHAR_UNSIGNED)
 "// Fail compile for unsigned char.
 int main()
 {
-  unsigned char uc = 255;
-  char *unused_array[(*reinterpret_cast<char*>(&uc) < 0)?1:-1];
+  char *unused_array[((char)-1<0)?1:-1];
   return 0;
 }")
    if(C_CHAR_SIGNED_COMPILED)
@@ -1479,7 +1478,7 @@ function(DCMTK_CHECK_CXX_STANDARD STANDARD)
   else()
     set(MESSAGE "Checking whether the compiler supports C++${STANDARD}")
     message(STATUS "${MESSAGE}")
-    try_compile(COMPILE_RESULT "${CMAKE_BINARY_DIR}" "${DCMTK_SOURCE_DIR}/config/tests/cxx${STANDARD}.cc")
+    try_compile(COMPILE_RESULT "${CMAKE_BINARY_DIR}" "${DCMTK_SOURCE_DIR}/config/tests/cxx${STANDARD}.cc" COMPILE_DEFINITIONS ${FORCE_MSVC_CPLUSPLUS_MACRO})
     set(HAVE_CXX${STANDARD}_TEST_RESULT "${COMPILE_RESULT}" CACHE INTERNAL "Caches the configuration test result for C++${STANDARD} support.")
     if(COMPILE_RESULT)
       set(RESULT 1)
@@ -1493,9 +1492,12 @@ endfunction()
 
 function(DCMTK_TEST_ENABLE_CXX11)
   get_property(MODERN_CXX_STANDARDS GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS)
+  # loop through all standard versions (11, 14, ...) and reset
+  # ENABLE_CXX_... for this standard to 0 for the moment
   foreach(STANDARD ${MODERN_CXX_STANDARDS})
     set(ENABLE_CXX${STANDARD} 0)
   endforeach()
+  # DCMTK_CMAKE_HAS_CXX_STANDARD is true for CMake versions >= 3.1.3
   get_property(DCMTK_CMAKE_HAS_CXX_STANDARD GLOBAL PROPERTY DCMTK_CMAKE_HAS_CXX_STANDARD)
   if(DCMTK_CMAKE_HAS_CXX_STANDARD)
     get_property(MODERN_CXX_STANDARD GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARD)
@@ -1544,7 +1546,7 @@ function(DCMTK_TEST_ENABLE_STL_FEATURE NAME)
   endif()
   set(RESULT 0)
   set(TEXT_RESULT "disabled")
-  if(DCMTK_ENABLE_STL_${FEATURE} STREQUAL "ON")
+  if(DCMTK_ENABLE_STL_${FEATURE})
     if(DEFINED HAVE_STL_${FEATURE}_TEST_RESULT)
       if(HAVE_STL_${FEATURE}_TEST_RESULT)
         set(RESULT 1)
@@ -1572,6 +1574,20 @@ function(DCMTK_TEST_ENABLE_STL_FEATURE NAME)
   message(STATUS "Info: STL ${NAME} support ${TEXT_RESULT}")
 endfunction()
 
+
+
+# Visual Studio >= 2017 supports C++11 and later, but does not set
+# the __cplusplus macro with the supported C++ standard version.
+# /Zc:__cplusplus will enforce setting this macro in Visual Studio.
+# VS Versions < 2017 do not support this switch.
+# See also https://learn.microsoft.com/de-de/cpp/build/reference/zc-cplusplus
+set(FORCE_MSVC_CPLUSPLUS_MACRO "")
+if(MSVC)
+  if(NOT (MSVC_VERSION LESS 1910)) # VS 2017 and above
+    set (FORCE_MSVC_CPLUSPLUS_MACRO "/Zc:__cplusplus")
+  endif()
+endif()
+# Check which modern C++ standards should be enabled
 DCMTK_TEST_ENABLE_CXX11()
 DCMTK_TEST_ENABLE_STL_FEATURE("vector")
 DCMTK_TEST_ENABLE_STL_FEATURE("algorithm" "algo")
@@ -1584,6 +1600,19 @@ DCMTK_TEST_ENABLE_STL_FEATURE("string")
 DCMTK_TEST_ENABLE_STL_FEATURE("type_traits" "ttraits")
 DCMTK_TEST_ENABLE_STL_FEATURE("tuple")
 DCMTK_TEST_ENABLE_STL_FEATURE("system_error" "syserr")
+# if at least one modern C++ standard should be supported,
+# add FORCE_MSVC_CPLUSPLUS_MACRO for MSVC to enforce setting
+# of __cplusplus macro
+if(MSVC)
+  get_property(MODERN_CXX_STANDARDS GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS)
+  foreach(STANDARD ${MODERN_CXX_STANDARDS})
+    if(HAVE_CXX${STANDARD})
+      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FORCE_MSVC_CPLUSPLUS_MACRO}")
+      break()
+    endif()
+  endforeach()
+endif()
+
 
 if(CMAKE_CROSSCOMPILING)
   set(DCMTK_CROSS_COMPILING ${CMAKE_CROSSCOMPILING})
index 13c79c0d56c2bc124c6579f7031b50e1d88dca12..963e69db3ef9f369acbdd94d843649bfa5bf03b3 100644 (file)
@@ -1,14 +1,14 @@
- prefix="@CMAKE_INSTALL_PREFIX@"
- exec_prefix="${prefix}"
- libdir="${prefix}/@CMAKE_INSTALL_LIBDIR@"
- includedir="${prefix}/include/"
+prefix="@CMAKE_INSTALL_PREFIX@"
+exec_prefix="${prefix}"
+libdir="@CMAKE_INSTALL_FULL_LIBDIR@"
+includedir="${prefix}/include/"
 
- Name: DCMTK
- Description: DICOM Toolkit (DCMTK)
- URL: https://dcmtk.org
- Version: @DCMTK_MAJOR_VERSION@.@DCMTK_MINOR_VERSION@.@DCMTK_BUILD_VERSION@
- Requires: @PKGCONF_REQ_PUB@
- Requires.private: @PKGCONF_REQ_PRIV@
- Cflags: -I"${includedir}"
- Libs: -L"${libdir}" @PKGCONF_LIBS@
- Libs.private: -L"${libdir}" @PKGCONF_LIBS_PRIV@
+Name: DCMTK
+Description: DICOM Toolkit (DCMTK)
+URL: https://dcmtk.org
+Version: @DCMTK_MAJOR_VERSION@.@DCMTK_MINOR_VERSION@.@DCMTK_BUILD_VERSION@
+Requires: @PKGCONF_REQ_PUB@
+Requires.private: @PKGCONF_REQ_PRIV@
+Cflags: -I"${includedir}"
+Libs: -L"${libdir}" @PKGCONF_LIBS@
+Libs.private: -L"${libdir}" @PKGCONF_LIBS_PRIV@
index 6cbce0a913650449d3de02a060f5ad0c72543de2..7c3ef33e5809bbc44a604fc640d970a4b17dd20d 100644 (file)
@@ -30,12 +30,7 @@ function(DCMTK_ADD_TESTS MODULE)
             # This assumes that test names are globally unique
             add_test(NAME "${TEST}" COMMAND "${CMAKE_COMMAND}" "-DDCMTK_CTEST_TESTCASE_COMMAND=${TEST_COMMAND}" "-DDCMTK_CTEST_TEST_NAME=${TEST}" "-P" "${DCMTK_RUN_CTEST_SCRIPT}")
             set_property(TEST "${TEST}" PROPERTY LABELS "${MODULE}")
-            if(CMAKE_VERSION VERSION_LESS 3.0.0)
-                # CMake versions prior 3 seemingly don't understand $<TARGET_FILE:tgt> within a test's REQUIRED_FILES property
-                set_property(TEST "${TEST}" PROPERTY REQUIRED_FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${MODULE}_tests${CMAKE_EXECUTABLE_SUFFIX}")
-            else()
-                set_property(TEST "${TEST}" PROPERTY REQUIRED_FILES "${TEST_EXECUTABLE}")
-            endif()
+            set_property(TEST "${TEST}" PROPERTY REQUIRED_FILES "${TEST_EXECUTABLE}")
         endforeach()
         add_custom_target("${MODULE}-test-exhaustive"
             COMMAND "${CMAKE_COMMAND}" "-DCONFIG=${DCMTK_CONFIG_GENERATOR_EXPRESSION}" "-P" "${DCMTK_SOURCE_DIR}/CMake/CTest/dcmtkCTestRunExhaustive.cmake"
@@ -148,38 +143,20 @@ endmacro()
 set(DCMTK_ALL_LIBRARIES CACHE INTERNAL "List of all libraries in the DCMTK.")
 set(DCMTK_LIBRARY_DEPENDENCIES CACHE INTERNAL "Dependencies of the DCMTK libraries.")
 
-# Failsafe implementation of UNSET for old CMake versions
-if(CMAKE_VERSION VERSION_LESS 2.6.3)
-  macro(DCMTK_UNSET VAR)
-    set(${VAR})
-  endmacro()
-else()
-  macro(DCMTK_UNSET VAR)
-    unset(${VAR})
-  endmacro()
-endif()
-
-# Failsafe implementation of unset(... CACHE) for old CMake versions
-if(CMAKE_VERSION VERSION_LESS 2.6.3)
-  macro(DCMTK_UNSET_CACHE VAR)
-    set(${VAR} CACHE INTERNAL "")
-  endmacro()
-else()
-  macro(DCMTK_UNSET_CACHE VAR)
-    unset(${VAR} CACHE)
-  endmacro()
-endif()
-
-# Failsafe implementation of unset(... PARENT_SCOPE) for old CMake versions
-if(CMAKE_VERSION VERSION_LESS 3.0)
-  macro(DCMTK_UNSET_PARENT_SCOPE VAR)
-    set(${VAR} PARENT_SCOPE)
-  endmacro()
-else()
-  macro(DCMTK_UNSET_PARENT_SCOPE VAR)
-    unset(${VAR} PARENT_SCOPE)
-  endmacro()
-endif()
+# implementation of UNSET
+macro(DCMTK_UNSET VAR)
+  unset(${VAR})
+endmacro()
+
+# implementation of unset(... CACHE)
+macro(DCMTK_UNSET_CACHE VAR)
+  unset(${VAR} CACHE)
+endmacro()
+
+# implementation of unset(... PARENT_SCOPE)
+macro(DCMTK_UNSET_PARENT_SCOPE VAR)
+  unset(${VAR} PARENT_SCOPE)
+endmacro()
 
 # A C++ STL style upper_bound function for CMake ';' lists
 function(DCMTK_UPPER_BOUND LIST COMP VAR)
index 6fe6c711842e0604d6bd07c415652705ef4e5a3a..66421a7728de74ed1a5706c48205eabb1376924a 100644 (file)
@@ -141,11 +141,11 @@ endif()
 
 # Gather information about the employed CMake version's behavior
 set(DCMTK_CMAKE_HAS_CXX_STANDARD FALSE)
-if(NOT CMAKE_MAJOR_VERSION LESS 3) # CMake versions prior to 3 don't understand VERSION_LESS etc.
-  if(NOT CMAKE_VERSION VERSION_LESS "3.1.3")
-    set(DCMTK_CMAKE_HAS_CXX_STANDARD TRUE)
-  endif()
+
+if(NOT CMAKE_VERSION VERSION_LESS "3.1.3")
+  set(DCMTK_CMAKE_HAS_CXX_STANDARD TRUE)
 endif()
+
 define_property(GLOBAL PROPERTY DCMTK_CMAKE_HAS_CXX_STANDARD
   BRIEF_DOCS "TRUE iff the CXX_STANDARD property exists."
   FULL_DOCS "TRUE for CMake versions since 3.1.3 that evaluate the CXX_STANDARD property and CMAKE_CXX_STANDARD variable."
@@ -209,11 +209,17 @@ DCMTK_INFERABLE_OPTION(DCMTK_ENABLE_CXX11 "Enable use of native C++11 features (
 
 # On Windows, the built-in dictionary is default, on Unix the external one.
 # It is not possible to use both, built-in plus external default dictionary.
-if(WIN32 OR MINGW)
-  set(DCMTK_DEFAULT_DICT "builtin" CACHE STRING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup")
-else() # built-in dictionary turned off on Unix per default
-  set(DCMTK_DEFAULT_DICT "external" CACHE STRING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup")
+if(NOT DEFINED DCMTK_DEFAULT_DICT)
+  if(WIN32 OR MINGW)
+    set(DCMTK_DEFAULT_DICT_DEFAULT "builtin")
+  else() # built-in dictionary turned off on Unix per default
+    set(DCMTK_DEFAULT_DICT_DEFAULT "external")
+  endif()
+else()
+  # prefer user specified one:
+  set(DCMTK_DEFAULT_DICT_DEFAULT "${DCMTK_DEFAULT_DICT}")
 endif()
+set(DCMTK_DEFAULT_DICT "${DCMTK_DEFAULT_DICT_DEFAULT}" CACHE STRING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup")
 set_property(CACHE DCMTK_DEFAULT_DICT PROPERTY STRINGS builtin external none)
 if (DCMTK_DEFAULT_DICT EQUAL "none")
   message(WARNING "Denotes whether DCMTK will use built-in (compiled-in), external (file), or no default dictionary on startup")
@@ -370,7 +376,7 @@ else()
   set(DCMTK_COMPILE_WIN32_MULTITHREADED_DLL OFF)
 endif()
 
-if(WIN32 AND CMAKE_GENERATOR MATCHES "Visual Studio .*")
+if(WIN32 AND CMAKE_GENERATOR MATCHES "Visual Studio .*|NMake .*")
   if (POLICY CMP0091)
     # CMake 3.15 and newer use CMAKE_MSVC_RUNTIME_LIBRARY to select
     # the MSVC runtime library
@@ -588,20 +594,6 @@ set_property(GLOBAL PROPERTY DCMTK_MODERN_CXX_STANDARDS 11 14 17)
 # Enable various warnings by default
 #-----------------------------------------------------------------------------
 
-# fallback implementation of add_compile_options()
-if(CMAKE_MAJOR_VERSION LESS 3 AND NOT CMAKE_VERSION VERSION_EQUAL 2.8.12)
-  function(add_compile_options)
-    foreach(OPTION ${ARGN})
-        foreach(FLAG C CXX)
-            string(FIND "${CMAKE_${FLAG}_FLAGS}" "${OPTION}" IDX)
-            if(IDX EQUAL -1)
-                set("CMAKE_${FLAG}_FLAGS" "${CMAKE_${FLAG}_FLAGS} ${OPTION}" PARENT_SCOPE)
-            endif()
-        endforeach()
-    endforeach()
-  endfunction()
-endif()
-
 if(MSVC)
     # This code removes existing warning flags to prevent MSVC warning D9025.
     # Remove it once our minimum CMake version is >= 3.15, since those newer
@@ -697,11 +689,14 @@ if(DCMTK_WITH_OPENSSL)
   CHECK_INCLUDE_FILE_CXX("openssl/provider.h" HAVE_OPENSSL_PROVIDER_H)
 
   # test presence of functions, constants and macros needed for the dcmtls module
-  CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get0_param" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET0_PARAM)
-  CHECK_FUNCTIONWITHHEADER_EXISTS("RAND_egd" "openssl/rand.h" HAVE_OPENSSL_PROTOTYPE_RAND_EGD)
   CHECK_FUNCTIONWITHHEADER_EXISTS("DH_bits" "openssl/dh.h" HAVE_OPENSSL_PROTOTYPE_DH_BITS)
   CHECK_FUNCTIONWITHHEADER_EXISTS("EVP_PKEY_RSA_PSS" "openssl/evp.h" HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS)
   CHECK_FUNCTIONWITHHEADER_EXISTS("EVP_PKEY_base_id" "openssl/evp.h" HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("NID_dsa_with_SHA512" "openssl/obj_mac.h" HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("NID_ecdsa_with_SHA3_256" "openssl/obj_mac.h" HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("NID_sha512_256WithRSAEncryption" "openssl/obj_mac.h" HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("RAND_egd" "openssl/rand.h" HAVE_OPENSSL_PROTOTYPE_RAND_EGD)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get0_param" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET0_PARAM)
   CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get_cert_store" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CERT_STORE)
   CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_get_ciphers" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_GET_CIPHERS)
   CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_CTX_set0_tmp_dh_pkey" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET0_TMP_DH_PKEY)
@@ -713,8 +708,14 @@ if(DCMTK_WITH_OPENSSL)
   CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_ERROR_WANT_ASYNC" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_ASYNC)
   CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_ERROR_WANT_ASYNC_JOB" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_ASYNC_JOB)
   CHECK_FUNCTIONWITHHEADER_EXISTS("SSL_ERROR_WANT_CLIENT_HELLO_CB" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_3_RFC_AES_128_CCM_8_SHA256" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_3_RFC_AES_256_GCM_SHA384" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_3_RFC_CHACHA20_POLY1305_SHA256" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384)
   CHECK_FUNCTIONWITHHEADER_EXISTS("TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305)
   CHECK_FUNCTIONWITHHEADER_EXISTS("TLS_method" "openssl/ssl.h" HAVE_OPENSSL_PROTOTYPE_TLS_METHOD)
+  CHECK_FUNCTIONWITHHEADER_EXISTS("X509_STORE_CTX_get0_cert" "openssl/x509_vfy.h" HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT)
   CHECK_FUNCTIONWITHHEADER_EXISTS("X509_STORE_get0_param" "openssl/x509.h" HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM)
   CHECK_FUNCTIONWITHHEADER_EXISTS("X509_get_signature_nid" "openssl/x509.h" HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID)
 
@@ -775,11 +776,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL SunPro)
 endif()
 
 #-----------------------------------------------------------------------------
-# workaround for using the deprecated generator expression $<CONFIGURATION>
-# with old CMake versions that do not understand $<CONFIG>
+# generator expression $<CONFIG>
 #-----------------------------------------------------------------------------
-if(CMAKE_VERSION VERSION_LESS 3.0.0)
-  set(DCMTK_CONFIG_GENERATOR_EXPRESSION "$<CONFIGURATION>" CACHE INTERNAL "the generator expression to use for retrieving the current config")
-else()
-  set(DCMTK_CONFIG_GENERATOR_EXPRESSION "$<CONFIG>" CACHE INTERNAL "the generator expression to use for retrieving the current config")
-endif()
+set(DCMTK_CONFIG_GENERATOR_EXPRESSION "$<CONFIG>" CACHE INTERNAL "the generator expression to use for retrieving the current config")
index 86f7bd8b278ec547de255598ebe266c9114122e6..9c68ff0752d34bb7d7b1bf08ddeb05aeed99913d 100644 (file)
@@ -5,19 +5,6 @@
 # Usage and syntax is equivalent to CMake's try_run().
 #
 
-# CMakeParseArguments was introduced in CMake 2.8.3.
-# DCMTK_TRY_RUN will revert to CMake's internal try_run()
-# for versions prior to 2.8.3, as arguments can't be parsed
-# in that case. This means cross compiling support will be
-# disabled for CMake versions prior to 2.8.3.
-if(CMAKE_VERSION VERSION_LESS 2.8.3)
-
-macro(DCMTK_TRY_RUN)
-    try_run(${ARGN})
-endmacro()
-
-else()
-
 include(CMakeParseArguments)
 
 function(DCMTK_TRY_RUN_CROSS RUN_RESULT_VAR COMPILE_RESULT_VAR bindir srcfile)
@@ -91,5 +78,3 @@ macro(DCMTK_TRY_RUN)
         try_run(${ARGN})
     endif()
 endmacro()
-
-endif()
index dec15b94df13e50bdeeb6ac9c3e8af1922ffed7e..17232d687b37e64c2c1af5384399c3731e564193 100644 (file)
@@ -98,11 +98,7 @@ endmacro()
 function(DCMTK_ANDROID_FIND_RUNTIME_LIBRARIES VAR)
     set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
     foreach(DIR ${ANDROID_STL_INCLUDE_DIRS})
-        if(CMAKE_VERSION VERSION_LESS 2.8.11)
-            get_filename_component(DIR "${DIR}" PATH)
-        else()
-            get_filename_component(DIR "${DIR}" DIRECTORY)
-        endif()
+        get_filename_component(DIR "${DIR}" DIRECTORY)
         list(APPEND ANDROID_STL_LIBRARY_DIRS "${DIR}")
     endforeach()
     find_library(ANDROID_STL_SHARED_OBJECT ${ANDROID_STL} PATHS ${ANDROID_STL_LIBRARY_DIRS} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
@@ -200,11 +196,6 @@ endfunction()
 #       the generated UUID as a string value
 # Will ignore all additional arguments.
 #
-if(CMAKE_VERSION VERSION_LESS 2.8.11)
-macro(DCMTK_ANDROID_EMULATOR_GENERATE_UUID VAR)
-    string(RANDOM LENGTH 20 ALPHABET "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ${VAR})
-endmacro()
-else()
 function(DCMTK_ANDROID_EMULATOR_GENERATE_UUID VAR)
     string(RANDOM LENGTH 20 RAND)
     string(TIMESTAMP TM)
@@ -212,7 +203,6 @@ function(DCMTK_ANDROID_EMULATOR_GENERATE_UUID VAR)
     string(MD5 ${VAR} ${${VAR}})
     set(${VAR} ${${VAR}} PARENT_SCOPE)
 endfunction()
-endif()
 
 #
 # Tries to query the UUID property of an accessible Android device.
@@ -573,11 +563,7 @@ function(DCMTK_ANDROID_SHELL VAR)
         endif()
 
         # Prefix to prevent collision of output capturing files
-        if(CMAKE_VERSION VERSION_LESS 2.8.7)
-            string(RANDOM LENGTH 20 ALPHABET "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" PREFIX)
-        else()
-            string(MD5 PREFIX "${DCMTK_ANDROID_SHELL_COMMAND}")
-        endif()
+        string(MD5 PREFIX "${DCMTK_ANDROID_SHELL_COMMAND}")
 
         # Prepare output redirection (buffering)
         if(STREAMS_MERGED)
index 5011033c5784f218f0d7aeeb3014370c470b862c..6dbd7dc53b2a9b220c232d5dca9f47d6149d242d 100644 (file)
@@ -65,11 +65,7 @@ endfunction()
 #
 function(WINE_DETACHED VAR OUTPUT_VAR ERROR_VAR)
     # Prefix to prevent collision of output capturing files
-    if(CMAKE_VERSION VERSION_LESS 2.8.7)
-        string(RANDOM LENGTH 20 ALPHABET "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" PREFIX)
-    else()
-        string(MD5 PREFIX "${ARGN}")
-    endif()
+    string(MD5 PREFIX "${ARGN}")
     set(OUTPUT_FILE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PREFIX}_output")
     if(OUTPUT_VAR STREQUAL ERROR_VAR)
         set(ERROR_FILE "${OUTPUT_FILE}")
index 9df00867378d863831654b51a5402c5e722ebba5..e964f798b16d530b396bdeb9e5a95ae53cb16aeb 100644 (file)
@@ -1280,9 +1280,18 @@ DCMTK was configured to use C++17 features, but your compiler does not or was no
 /* Define if we have OpenSSL with the SSL_ERROR_WANT_CLIENT_HELLO_CB error code */
 #cmakedefine HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB @HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB@
 
-/* Define if we have OpenSSL with the EVP_PKEY_base_id error code */
+/* Define if we have OpenSSL with the EVP_PKEY_base_id function */
 #cmakedefine HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID @HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_BASE_ID@
 
+/* Define if we have OpenSSL with the HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 @HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512@
+
+/* Define if we have OpenSSL with the HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 @HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256@
+
+/* Define if we have OpenSSL with the HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION @HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION@
+
 /* Define if we have OpenSSL with the EVP_PKEY_RSA_PSS macro */
 #cmakedefine HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS @HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS@
 
@@ -1310,6 +1319,21 @@ DCMTK was configured to use C++17 features, but your compiler does not or was no
 /* Define if we have OpenSSL with the SSL_CTX_set_security_level() function */
 #cmakedefine HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET_SECURITY_LEVEL @HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET_SECURITY_LEVEL@
 
+/* Define if we have OpenSSL with the TLS1_3_RFC_AES_128_CCM_8_SHA256 macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256 @HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256@
+
+/* Define if we have OpenSSL with the TLS1_3_RFC_AES_256_GCM_SHA384 macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 @HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384@
+
+/* Define if we have OpenSSL with the TLS1_3_RFC_CHACHA20_POLY1305_SHA256 macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256 @HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256@
+
+/* Define if we have OpenSSL with the TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 @HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8@
+
+/* Define if we have OpenSSL with the TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 macro */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 @HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384@
+
 /* Define if we have OpenSSL with the TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 macro */
 #cmakedefine HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 @HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305@
 
@@ -1319,6 +1343,9 @@ DCMTK was configured to use C++17 features, but your compiler does not or was no
 /* Define if we have OpenSSL with the X509_get_signature_nid() function */
 #cmakedefine HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID @HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID@
 
+/* Define if we have OpenSSL with the X509_STORE_CTX_get0_cert() function */
+#cmakedefine HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT @HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT@
+
 /* Define if we have OpenSSL with the X509_STORE_get0_param() function */
 #cmakedefine HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM @HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM@
 
index 3c9214ed601a51d00e218e7b78cd95d4f9614245..bef673fce7ff7dd45158e6297fb4c82f1ff2376d 100644 (file)
@@ -1,5 +1,5 @@
 # Minimum CMake version required
-cmake_minimum_required(VERSION 3.0.0...3.23.1 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.0.0...3.27.3 FATAL_ERROR)
 
 # Declare project
 project(DCMTK)
@@ -210,5 +210,5 @@ configure_file(
 )
 
 install(FILES "${DCMTK_BINARY_DIR}/dcmtk.pc"
-  DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig
+  DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
 )
index 7602f1751ad9f48acea387402c82f75e912e2e43..42f22b6c04ccc93337fccc6680590d5a1893cad0 100644 (file)
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -5,7 +5,7 @@ Unless otherwise specified, the DCMTK software package has the following
 copyright:
 
 /*
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.
  *
  *  This software and supporting documentation were developed by
@@ -500,27 +500,28 @@ copyright:
 
 ---------------------------------------------------------------------------
 
-The dcmrt sub-package is covered by the following copyright:
+The dcmrt sub-package is covered by the following copyright
+(BSD 3-Clause License):
 
 ---------------------------------------------------------------------------
 
-Copyright (C) 2008-2022, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
-Copyright (C) 2013-2022, J. Riesmeier, Oldenburg, Germany
+Copyright (C) 2008-2023, OFFIS e.V. and ICSMED AG, Oldenburg, Germany.
+Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
 
-* Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
 
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
 
-* Neither the name of the copyright holders nor the names of its
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
+3. Neither the name of the copyright holders nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -536,26 +537,27 @@ POSSIBILITY OF SUCH DAMAGE.
 
 ---------------------------------------------------------------------------
 
-Parts of the dcmsr sub-package are covered by the following copyright:
+Parts of the dcmsr sub-package are covered by the following copyright
+(BSD 3-Clause License):
 
 ---------------------------------------------------------------------------
 
-Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
 
-* Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
 
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
 
-* Neither the name of the copyright holders nor the names of its
-  contributors may be used to endorse or promote products derived from this
-  software without specific prior written permission.
+3. Neither the name of the copyright holders nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -592,7 +594,7 @@ list of conditions and the following disclaimer.
 this list of conditions and the following disclaimer in the documentation and/or
 other materials provided with the distribution.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
diff --git a/INSTALL b/INSTALL
index 8edb2f7c31d347793464f092d4b975c5f5205691..97087f9a05e65040264d90027912c736958e67f3 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -190,12 +190,12 @@ using the Transport Layer Security (TLS) protocol as defined in DICOM part 15.
 DCMTK relies on the OpenSSL toolkit (www.openssl.org) for the underlying
 cryptographic routines and the TLS protocol implementation.
 
-This release of DCMTK requires OpenSSL release 1.0.1 or newer.  We recommend
-the use of OpenSSL 1.0.2 or newer, however, since some  optional functions
-recommended by RFC 7525 / BCP 195 are only available  starting with this
+This release of DCMTK requires OpenSSL release 1.0.2 or newer.  We recommend
+the use of OpenSSL 1.1.1 or newer, however, since some optional functions
+recommended by RFC 9325 / BCP 195 are only available  starting with this
 OpenSSL release.  Furthermore, users should make care that the most recent
 OpenSSL patch level is applied.  This release of DCMTK is known to compile with
-the OpenSSL releases 1.0.1 to 3.0.0.
+the OpenSSL releases 1.0.2 to 3.0.0.
 
 When using CMake, if support for security enhancements is desired, a compiled
 version of the OpenSSL libraries and include files must be available during
index f2e0c11bf863eb0c72ff42d58a7fb5bb6bd75643..004b098b26428e02ad4b23a2eee8b5728021bef7 100755 (executable)
@@ -696,7 +696,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -812,7 +811,6 @@ datadir='${datarootdir}/dcmtk-3.6.7-DEV'
 sysconfdir='${prefix}/etc/dcmtk-3.6.7-DEV'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/dcmtk-3.6.7-DEV'
@@ -1065,15 +1063,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1211,7 +1200,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir runstatedir
+               libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1364,7 +1353,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc/dcmtk-3.6.7-DEV]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -12990,7 +12978,7 @@ if ${ac_cv_check_std_namespace+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 12993 "configure"
+#line 12981 "configure"
 #include "confdefs.h"
 
 #include <iostream>
@@ -13241,7 +13229,7 @@ if ${ac_cv_check_std_namespace+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 13244 "configure"
+#line 13232 "configure"
 #include "confdefs.h"
 
 #include <iostream>
@@ -13491,7 +13479,7 @@ if ${ac_cv_check_class_template+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 13494 "configure"
+#line 13482 "configure"
 #include "confdefs.h"
 
 template <class T>
@@ -13560,7 +13548,7 @@ if ${ac_cv_check_static_template_method+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 13563 "configure"
+#line 13551 "configure"
 #include "confdefs.h"
 
 void additive(int & i)
@@ -13629,7 +13617,7 @@ if ${ac_cv_check_function_template+:} false; then :
 else
   ac_link_o='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.o $LIBS 1>&5'
 cat > conftest.$ac_ext <<EOF
-#line 13632 "configure"
+#line 13620 "configure"
 #include "confdefs.h"
 
 template <class T>
@@ -14365,6 +14353,132 @@ else
 $as_echo "no" >&6; }
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for NID_dsa_with_SHA512 (in openssl/obj_mac.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for NID_dsa_with_SHA512 (in openssl/obj_mac.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/obj_mac.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo NID_dsa_with_SHA512 | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+NID_dsa_with_SHA512
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for NID_ecdsa_with_SHA3_256 (in openssl/obj_mac.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for NID_ecdsa_with_SHA3_256 (in openssl/obj_mac.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/obj_mac.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo NID_ecdsa_with_SHA3_256 | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+NID_ecdsa_with_SHA3_256
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for NID_sha512_256WithRSAEncryption (in openssl/obj_mac.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for NID_sha512_256WithRSAEncryption (in openssl/obj_mac.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/obj_mac.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo NID_sha512_256WithRSAEncryption | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+NID_sha512_256WithRSAEncryption
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for RAND_egd (in openssl/rand.h)" >&5
 $as_echo_n "checking whether OpenSSL provides a prototype for RAND_egd (in openssl/rand.h)... " >&6; }
 
@@ -15030,6 +15144,216 @@ else
 $as_echo "no" >&6; }
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_128_CCM_8_SHA256 (in openssl/ssl.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_128_CCM_8_SHA256 (in openssl/ssl.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/ssl.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo TLS1_3_RFC_AES_128_CCM_8_SHA256 | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+TLS1_3_RFC_AES_128_CCM_8_SHA256
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_256_GCM_SHA384 (in openssl/ssl.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_3_RFC_AES_256_GCM_SHA384 (in openssl/ssl.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/ssl.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo TLS1_3_RFC_AES_256_GCM_SHA384 | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+TLS1_3_RFC_AES_256_GCM_SHA384
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_3_RFC_CHACHA20_POLY1305_SHA256 (in openssl/ssl.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_3_RFC_CHACHA20_POLY1305_SHA256 (in openssl/ssl.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/ssl.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo TLS1_3_RFC_CHACHA20_POLY1305_SHA256 | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+TLS1_3_RFC_CHACHA20_POLY1305_SHA256
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 (in openssl/ssl.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 (in openssl/ssl.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/ssl.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 (in openssl/ssl.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 (in openssl/ssl.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/ssl.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 (in openssl/ssl.h)" >&5
 $as_echo_n "checking whether OpenSSL provides a prototype for TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 (in openssl/ssl.h)... " >&6; }
 
@@ -15131,6 +15455,48 @@ else
 $as_echo "no" >&6; }
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for X509_STORE_CTX_get0_cert (in openssl/x509_vfy.h)" >&5
+$as_echo_n "checking whether OpenSSL provides a prototype for X509_STORE_CTX_get0_cert (in openssl/x509_vfy.h)... " >&6; }
+
+ac_includes=""
+for ac_header in openssl/x509_vfy.h
+do
+  ac_includes="$ac_includes
+#include<$ac_header>"
+done
+tmp_save_1=`echo X509_STORE_CTX_get0_cert | tr ' :' '__'`
+if eval \${ac_cv_compiles_$tmp_save_1+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes
+int
+main ()
+{
+X509_STORE_CTX_get0_cert
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "ac_cv_compiles_$tmp_save_1=yes"
+else
+  eval "ac_cv_compiles_$tmp_save_1=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+if eval "test \"`echo '$''{'ac_cv_compiles_$tmp_save_1'}'`\" = yes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  $as_echo "#define HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT 1" >>confdefs.h
+
+  :
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether OpenSSL provides a prototype for X509_STORE_get0_param (in openssl/x509.h)" >&5
 $as_echo_n "checking whether OpenSSL provides a prototype for X509_STORE_get0_param (in openssl/x509.h)... " >&6; }
 
index 8988140cf07be0694ff5a1aa5dde590baa2bf7fc..b86c2a91127c55153e320b07078830a4d6b9670e 100644 (file)
@@ -1050,6 +1050,9 @@ dnl test presence of functions, constants and macros needed for the dcmtls modul
 AC_CHECK_EXT_LIB_PROTOTYPE(DH_bits, OpenSSL, openssl/dh.h)
 AC_CHECK_EXT_LIB_COMPILES(EVP_PKEY_RSA_PSS, OpenSSL, openssl/evp.h, [EVP_PKEY_RSA_PSS])
 AC_CHECK_EXT_LIB_PROTOTYPE(EVP_PKEY_base_id, OpenSSL, openssl/evp.h)
+AC_CHECK_EXT_LIB_COMPILES(NID_dsa_with_SHA512, OpenSSL, openssl/obj_mac.h, [NID_dsa_with_SHA512])
+AC_CHECK_EXT_LIB_COMPILES(NID_ecdsa_with_SHA3_256, OpenSSL, openssl/obj_mac.h, [NID_ecdsa_with_SHA3_256])
+AC_CHECK_EXT_LIB_COMPILES(NID_sha512_256WithRSAEncryption, OpenSSL, openssl/obj_mac.h, [NID_sha512_256WithRSAEncryption])
 AC_CHECK_EXT_LIB_PROTOTYPE(RAND_egd, OpenSSL, openssl/rand.h)
 AC_CHECK_EXT_LIB_PROTOTYPE(SSL_CTX_get_cert_store, OpenSSL, openssl/ssl.h)
 AC_CHECK_EXT_LIB_PROTOTYPE(SSL_CTX_get_ciphers, OpenSSL, openssl/ssl.h)
@@ -1063,8 +1066,14 @@ AC_CHECK_EXT_LIB_PROTOTYPE(SSL_CTX_set_security_level, OpenSSL, openssl/ssl.h)
 AC_CHECK_EXT_LIB_COMPILES(SSL_ERROR_WANT_ASYNC, OpenSSL, openssl/ssl.h, [SSL_ERROR_WANT_ASYNC])
 AC_CHECK_EXT_LIB_COMPILES(SSL_ERROR_WANT_ASYNC_JOB, OpenSSL, openssl/ssl.h, [SSL_ERROR_WANT_ASYNC_JOB])
 AC_CHECK_EXT_LIB_COMPILES(SSL_ERROR_WANT_CLIENT_HELLO_CB, OpenSSL, openssl/ssl.h, [SSL_ERROR_WANT_CLIENT_HELLO_CB])
+AC_CHECK_EXT_LIB_COMPILES(TLS1_3_RFC_AES_128_CCM_8_SHA256, OpenSSL, openssl/ssl.h, [TLS1_3_RFC_AES_128_CCM_8_SHA256])
+AC_CHECK_EXT_LIB_COMPILES(TLS1_3_RFC_AES_256_GCM_SHA384, OpenSSL, openssl/ssl.h, [TLS1_3_RFC_AES_256_GCM_SHA384])
+AC_CHECK_EXT_LIB_COMPILES(TLS1_3_RFC_CHACHA20_POLY1305_SHA256, OpenSSL, openssl/ssl.h, [TLS1_3_RFC_CHACHA20_POLY1305_SHA256])
+AC_CHECK_EXT_LIB_COMPILES(TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8, OpenSSL, openssl/ssl.h, [TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8])
+AC_CHECK_EXT_LIB_COMPILES(TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, OpenSSL, openssl/ssl.h, [TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384])
 AC_CHECK_EXT_LIB_COMPILES(TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305, OpenSSL, openssl/ssl.h, [TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305])
 AC_CHECK_EXT_LIB_PROTOTYPE(TLS_method, OpenSSL, openssl/ssl.h)
+AC_CHECK_EXT_LIB_COMPILES(X509_STORE_CTX_get0_cert, OpenSSL, openssl/x509_vfy.h, [X509_STORE_CTX_get0_cert])
 AC_CHECK_EXT_LIB_PROTOTYPE(X509_STORE_get0_param, OpenSSL, openssl/x509.h)
 AC_CHECK_EXT_LIB_PROTOTYPE(X509_get_signature_nid, OpenSSL, openssl/x509.h)
 
index 8a8de85a4ac53d2de62d063b1fae22a5e9973b0f..1c707c22dc1f8760c45d77b5f792614c254e8648 100755 (executable)
@@ -608,7 +608,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -673,7 +672,6 @@ datadir='${datarootdir}/dcmtk-3.6.7-DEV'
 sysconfdir='${prefix}/etc/dcmtk-3.6.7-DEV'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/dcmtk-3.6.7-DEV'
@@ -926,15 +924,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1072,7 +1061,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir runstatedir
+               libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1225,7 +1214,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc/dcmtk-3.6.7-DEV]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
index ad4773975c6cce5e0a55c95368f6d7e2f9ef7819..c6df7cee8e8c0d6473b04fb86852a41813550edb 100644 (file)
@@ -40,7 +40,8 @@ Trying to include a DCMTK build with C++11 enabled from a non C++11
 environment will give you the following error message:
 
 @verbatim
-DCMTK was configured to use C++11 features, but your compiler does not or was not configured to provide them.
+DCMTK was configured to use C++11 features, but your compiler does not or was
+not configured to provide them.
 @endverbatim
 
 To reduce DCMTK's implementation complexity, C++11 shall only be used if your
@@ -49,6 +50,10 @@ this is currently true for the following compilers:
 
 \li GNU C++ Compiler (g++) Version 4.8.1 or later.
 \li Clang (clang++) Version 3.3 or later.
+\li According to <a href="https://learn.microsoft.com/en-us/cpp/overview/install-c17-support?view=msvc-170">
+Microsoft documentation</a>, Visual Studio 2019 Version 16.8 (or higher)
+with Windows SDK 10.0.20348.0 Version 2104 (or higher). DCMTK already allows
+enabling C++11 for VS 2017 which reportedly also works well.
 
 To enable the C++11 STL, different steps are necessary on CMake and GNU
 Autoconf, see the appropriate section below:
index 2c49ba7f281c7f564be26ba98c5bc58f5e479740..ec6d26c75722dc6d4cea116041e74e778015208d 100644 (file)
@@ -58,6 +58,18 @@ DCMTK_UNDEF_SANITIZER
     raised by the sanitizer and thus prevent the CMake configure phase from
     completing.
 
+DCMTK_ENABLE_ACR_NEMA_DATASET_PRESENT_COMPATIBILITY
+  Affected: dcmnet
+  Type of modification: Toolkit customization
+  Explanation: In DCMTK releases before 3.6.8, some tools incorrectly
+    compare DataSetType for equality with DIMSE_DATASET_PRESENT,
+    instead of checking whether DataSetType is different from
+    DIMSE_DATASET_NULL. These tools will fail if a different value
+    than 0x0001 is used for this constant. See DCMTK issue #1045.
+    The DICOM standard, on the other hand, recommends the value 0x0102
+    if backwards compatibility with ACR-NEMA is desired. If this is
+    important, compile with this macro enabled.
+
 DCMTK_ENABLE_STRICT_HUFFMAN_TABLE_CHECK
   Affected: dcmjpeg
   Type of modification: Activates feature
@@ -93,6 +105,24 @@ DCMTK_GUI
     them to the user or store them in a log file.  See comments in
     ofstd/include/dcmtk/ofstd/ofconsol.h.
 
+DCMTK_IGNORE_BCP195M_CAMELLIA_GCM_REQUIREMENT
+  Affected: dcmtls
+  Type of modification: Enables experimental feature
+  Explanation: Starting with release 3.6.8, DCMTK contains a feature-complete
+    implementation of the "Modified BCP 195 RFC 8996 TLS Secure Transport
+    Connection Profile". Unfortunately, this profile cannot be implemented
+    with any current version of OpenSSL or LibreSSL because the DICOM committee
+    has declared support for the TLS 1.2 Camellia ciphersuites in GCM mode
+    mandatory, and these are not supported in either OpenSSL or LibreSSL.
+    This macro will enable the support for this profile on library and
+    command line tool level, but in a manner that is not fully DICOM compliant
+    (i.e. without the Camellia GCM ciphersuites).
+    Should OpenSSL/LibreSSL add support for these ciphersuites in the
+    future, support for the TLS profile will automatically be enabled
+    when compiling DCMTK against such a future release, because there is
+    a configure test that checks the availability of this feature.
+    This macro is primarily intended for testing purposes.
+
 DCMTK_LOG4CPLUS_AVOID_WIN32_FLS
   Affected: oflog
   Type of modification: Disables feature
index c99aa1e64c5472013a50deb96ee4317393fe96f3..f4a94b60de725201789a87cd36020bc2c2242c11 100644 (file)
@@ -635,6 +635,18 @@ typedef unsigned short ushort;
    <openssl/evp.h>. */
 #undef HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS
 
+/* Define if OpenSSL provides a prototype for NID_dsa_with_SHA512 in
+   <openssl/obj_mac.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512
+
+/* Define if OpenSSL provides a prototype for NID_ecdsa_with_SHA3_256 in
+   <openssl/obj_mac.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256
+
+/* Define if OpenSSL provides a prototype for NID_sha512_256WithRSAEncryption
+   in <openssl/obj_mac.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION
+
 /* Define if OpenSSL provides a prototype for OSSL_PROVIDER_load in
    <openssl/provider.h>. */
 #undef HAVE_OPENSSL_PROTOTYPE_OSSL_PROVIDER_LOAD
@@ -690,6 +702,26 @@ typedef unsigned short ushort;
    in <openssl/ssl.h>. */
 #undef HAVE_OPENSSL_PROTOTYPE_SSL_ERROR_WANT_CLIENT_HELLO_CB
 
+/* Define if OpenSSL provides a prototype for TLS1_3_RFC_AES_128_CCM_8_SHA256
+   in <openssl/ssl.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256
+
+/* Define if OpenSSL provides a prototype for TLS1_3_RFC_AES_256_GCM_SHA384 in
+   <openssl/ssl.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+
+/* Define if OpenSSL provides a prototype for
+   TLS1_3_RFC_CHACHA20_POLY1305_SHA256 in <openssl/ssl.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256
+
+/* Define if OpenSSL provides a prototype for
+   TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 in <openssl/ssl.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8
+
+/* Define if OpenSSL provides a prototype for
+   TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 in <openssl/ssl.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+
 /* Define if OpenSSL provides a prototype for
    TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 in <openssl/ssl.h>. */
 #undef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305
@@ -738,6 +770,10 @@ typedef unsigned short ushort;
    <openssl/x509.h>. */
 #undef HAVE_OPENSSL_PROTOTYPE_X509_GET_SIGNATURE_NID
 
+/* Define if OpenSSL provides a prototype for X509_STORE_CTX_get0_cert in
+   <openssl/x509_vfy.h>. */
+#undef HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT
+
 /* Define if OpenSSL provides a prototype for X509_STORE_get0_param in
    <openssl/x509.h>. */
 #undef HAVE_OPENSSL_PROTOTYPE_X509_STORE_GET0_PARAM
index bc3f80d2927a6a46251733a85b8a0c9a75c08d5d..83be46baaa411427310d3cefbafef067f91edf71 100644 (file)
@@ -105,7 +105,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in",   "DICOM input filename to be converted", OFCmdParam::PM_Mandatory);
+    cmd.addParam("dcmfile-in",   "DICOM input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory);
     cmd.addParam("jsonfile-out", "JSON output filename (default: stdout)", OFCmdParam::PM_Optional);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
index 912e3cea9a90c5e58e6f861a3bf7b941476bc41a..ead47f7a9e609db12ac3136776855e67d488c080 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2007-2022, OFFIS e.V.
+ *  Copyright (C) 2007-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -98,7 +98,7 @@ int main(int argc, char *argv[])
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename (\"-\" for stdin)");
   cmd.addParam("pdffile-out", "PDF output filename");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
@@ -111,7 +111,7 @@ int main(int argc, char *argv[])
       cmd.addOption("--read-file",          "+f",     "read file format or data set (default)");
       cmd.addOption("--read-file-only",     "+fo",    "read file format only");
       cmd.addOption("--read-dataset",       "-f",     "read data set without file meta information");
-    cmd.addSubGroup("input transfer syntax:", LONGCOL, SHORTCOL);
+    cmd.addSubGroup("input transfer syntax:");
       cmd.addOption("--read-xfer-auto",     "-t=",    "use TS recognition (default)");
       cmd.addOption("--read-xfer-detect",   "-td",    "ignore TS specified in the file meta header");
       cmd.addOption("--read-xfer-little",   "-te",    "read with explicit VR little endian TS");
index 70c24c05a42830faa46b3431e9bd252b24f6ec1b..611812848558351df40f01aaa54831759b73e051 100644 (file)
@@ -324,7 +324,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in",  "DICOM input filename to be converted", OFCmdParam::PM_Mandatory);
+    cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory);
     cmd.addParam("xmlfile-out", "XML output filename (default: stdout)", OFCmdParam::PM_Optional);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
index 3eec487067da6c0ce8d5c1ba5fea171d529c0a98..759f622e833485ba7a9c5c413227e778e56d8fad 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -101,8 +101,8 @@ int main(int argc, char *argv[])
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
     cmd.addOption("--help",                  "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index b79087122a2f5364ac0d21fa532951df09bd97db..0a58a100d8216322263fb944914d00cf47e168fc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2021, OFFIS e.V.
+ *  Copyright (C) 2002-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -70,8 +70,8 @@ int main(int argc, char *argv[])
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
     cmd.addOption("--help",                  "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 1405587e2b380f8e1b8f9bab515b4bdb7e398aa6..bafa13c1baf3a97d90c7e274b249f6b30ecfa845 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2021, OFFIS e.V.
+ *  Copyright (C) 2002-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -69,8 +69,8 @@ int main(int argc, char *argv[])
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
     cmd.addOption("--help",                  "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 4e3215c8e85dce23621de7be8d372c848ab1cac9..94d5abae99f14bdf3cd9a1f30cc80da800f14217 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #define PATTERN_MATCHING_AVAILABLE
 #endif
 
-#ifndef HAVE_WINDOWS_H
-#define ANSI_ESCAPE_CODES_AVAILABLE
-#endif
-
 #define OFFIS_CONSOLE_APPLICATION "dcmdump"
 
 static OFLogger dcmdumpLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APPLICATION);
@@ -163,7 +159,7 @@ DCMTK_MAIN_FUNCTION
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in", "DICOM input file or directory to be dumped", OFCmdParam::PM_MultiMandatory);
+    cmd.addParam("dcmfile-in", "DICOM input file or directory to be dumped\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
       cmd.addOption("--help",                  "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
@@ -265,12 +261,9 @@ DCMTK_MAIN_FUNCTION
         cmd.addOption("--quote-nonascii",      "+Qn",    "quote non-ASCII and control chars as XML markup");
         cmd.addOption("--quote-as-octal",      "+Qo",    "quote non-ASCII and control ch. as octal numbers");
         cmd.addOption("--print-nonascii",      "-Qn",    "print non-ASCII and control chars (default)");
-#ifdef ANSI_ESCAPE_CODES_AVAILABLE
       cmd.addSubGroup("color:");
         cmd.addOption("--print-color",         "+C",     "use ANSI escape codes for colored output");
         cmd.addOption("--no-color",            "-C",     "do not use any ANSI escape codes (default)");
-#endif
-
       cmd.addSubGroup("error handling:");
         cmd.addOption("--stop-on-error",       "-E",     "do not print if file is damaged (default)");
         cmd.addOption("--ignore-errors",       "+E",     "attempt to print even if file is damaged");
@@ -570,12 +563,10 @@ DCMTK_MAIN_FUNCTION
         printFlags = printFlags & ~(DCMTypes::PF_convertToMarkup | DCMTypes::PF_convertToOctalNumbers);
       cmd.endOptionBlock();
 
-#ifdef ANSI_ESCAPE_CODES_AVAILABLE
       cmd.beginOptionBlock();
       if (cmd.findOption("--print-color")) printFlags |= DCMTypes::PF_useANSIEscapeCodes;
       if (cmd.findOption("--no-color")) printFlags &= ~DCMTypes::PF_useANSIEscapeCodes;
       cmd.endOptionBlock();
-#endif
 
       cmd.beginOptionBlock();
       if (cmd.findOption("--stop-on-error")) stopOnErrors = OFTrue;
@@ -743,7 +734,7 @@ static void printResult(STD_NAMESPACE ostream &out,
             /* do not print if a DCM_Item as this is not
              * very helpful to distinguish instances.
              */
-            if (dobj != NULL && dobj->getTag().getXTag() != DCM_Item) {
+            if (dobj != NULL && dobj->getTag() != DCM_Item) {
                 out << dobj->getTag() << ".";
             }
         }
index 522475a1c4b40fbf60780e9150149d0442ef6136..9cdc3e711833373046c2dd748594a6245146239e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -626,10 +626,10 @@ insertIntoSet(DcmStack &stack, const E_TransferSyntax xfer, const DcmTagKey &tag
         }
         else if (newElementError == EC_InvalidTag)
         {
-            if (tag.getXTag() == DCM_Item)
+            if (tag == DCM_Item)
             {
                 DcmItem *item = NULL;
-                if (topOfStack->getTag().getXTag() == DCM_DirectoryRecordSequence)
+                if (topOfStack->getTag() == DCM_DirectoryRecordSequence)
                 {
                     // an Item must be pushed to the stack
                     item = new DcmDirectoryRecord(tag, 0);
@@ -792,7 +792,7 @@ int main(int argc, char *argv[])
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
     cmd.addParam("dumpfile-in", "dump input filename");
-    cmd.addParam("dcmfile-out", "DICOM output filename");
+    cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)");
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
      cmd.addOption("--help",                   "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
@@ -1012,7 +1012,7 @@ int main(int argc, char *argv[])
     }
     OFLOG_INFO(dump2dcmLogger, "reading dump file: " << opt_ifname);
 
-    FILE *dumpfile = fopen(opt_ifname, "r");
+    FILE *dumpfile = fopen(opt_ifname, "rb");
     if (!dumpfile)
     {
         OFLOG_FATAL(dump2dcmLogger, "input file does not exist: " << opt_ifname);
index e2e62bb2cc60027ee7492f77174c307510a39319..742ff8153f58cbbca5ba59b7349ca7ea8a892f70 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2007-2022, OFFIS e.V.
+ *  Copyright (C) 2007-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -92,6 +92,7 @@ static OFCondition evaluateFromFileOptions(
   }
 #endif
 
+  cmd.beginOptionBlock();
   if (cmd.findOption("--study-from"))
   {
     OFString tempStr;
@@ -111,6 +112,7 @@ static OFCondition evaluateFromFileOptions(
       return makeOFCondition(OFM_dcmdata, 18, OF_error, "Unable to read value of --series-from option");
     converter.setSeriesFrom(tempStr);
   }
+  cmd.endOptionBlock();
 
   if (cmd.findOption("--instance-inc"))
     converter.setIncrementInstanceNumber(OFTrue);
@@ -123,7 +125,7 @@ static OFCondition evaluateFromFileOptions(
 static void addCmdLineOptions(OFCommandLine& cmd)
 {
   cmd.addParam("imgfile-in",  "image input filename", OFCmdParam::PM_MultiMandatory);
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
     cmd.addOption("--help",                  "-h",      "print this help text and exit", OFCommandLine::AF_Exclusive);
index 84497aaec704488df4da594f34584368e4cb233a..5583d45b9c319d7c53d73a3e0834111f693edf8c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2020, OFFIS e.V.
+ *  Copyright (C) 2003-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -81,7 +81,7 @@ MdfConsoleEngine::MdfConsoleEngine(int argc, char *argv[],
     cmd->setOptionColumns(LONGCOL, SHORTCOL);
     cmd->setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd->addParam("dcmfile-in", "DICOM input filename to be modified", OFCmdParam::PM_MultiMandatory);
+    cmd->addParam("dcmfile-in", "DICOM input filename to be modified\n(\"-\" for stdin/stdout)", OFCmdParam::PM_MultiMandatory);
 
     // add options to commandline application
     cmd->addGroup("general options:", LONGCOL, SHORTCOL + 2);
index f9eda835fec7ebb22a92fd743e45b466015f59a6..c7529523db0184b77db52b8e095646149d377548 100644 (file)
@@ -74,8 +74,8 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("xmlfile-in",  "XML input filename to be converted (stdin: \"-\")", OFCmdParam::PM_Mandatory);
-    cmd.addParam("dcmfile-out", "DICOM output filename", OFCmdParam::PM_Mandatory);
+    cmd.addParam("xmlfile-in",  "XML input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory);
+    cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)", OFCmdParam::PM_Mandatory);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
       cmd.addOption("--help",                  "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index e8f575f4d555df090b829b2c4ac41cd74e36e331..9ad2da61824f18d0c39c9a60fdb7805850834105 100644 (file)
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 1994-2022, OFFIS e.V.
+#  Copyright (C) 1994-2023, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
@@ -21,8 +21,8 @@
 # DICONDE (Digital Imaging and Communication in Nondestructive Evaluation) and
 # DICOS (Digital Imaging and Communications in Security) standard.
 #
-# Generated automatically from DICOM PS 3.6-2022d and PS 3.7-2022d.
-# File created on 2022-10-17 21:01:54 by J. Riesmeier on thinkpad2.
+# Generated automatically from DICOM PS 3.6-2023c and PS 3.7-2023c.
+# File created on 2023-07-14 12:17:55 by J. Riesmeier on thinkpad2.
 #
 # In addition, the data dictionary entries from the following final text
 # supplements and correction items (CP) have been incorporated:
 (0008,0400)    SQ      ScopeOfInventorySequence        1       DICOM
 (0008,0401)    LT      InventoryPurpose        1       DICOM
 (0008,0402)    LT      InventoryInstanceDescription    1       DICOM
-(0008,0403)    CS      InventoryContentLevel   1       DICOM
+(0008,0403)    CS      InventoryLevel  1       DICOM
 (0008,0404)    DT      ItemInventoryDateTime   1       DICOM
 (0008,0405)    CS      RemovedFromOperationalUse       1       DICOM
 (0008,0406)    SQ      ReasonForRemovalCodeSequence    1       DICOM
 (0008,040E)    UI      StoredInstanceTransferSyntaxUID 1       DICOM
 (0008,040F)    CS      ExtendedMatchingMechanisms      1-n     DICOM
 (0008,0410)    SQ      RangeMatchingSequence   1       DICOM
-(0008,0411)    SQ      UIDListMatchingSequence 1       DICOM
+(0008,0411)    SQ      ListOfUIDMatchingSequence       1       DICOM
 (0008,0412)    SQ      EmptyValueMatchingSequence      1       DICOM
 (0008,0413)    SQ      GeneralMatchingSequence 1       DICOM
 (0008,0414)    US      RequestedStatusInterval 1       DICOM
 (0008,3010)    UI      IrradiationEventUID     1-n     DICOM
 (0008,3011)    SQ      SourceIrradiationEventSequence  1       DICOM
 (0008,3012)    UI      RadiopharmaceuticalAdministrationEventUID       1       DICOM
-(0008,9007)    CS      FrameType       4       DICOM
+(0008,9007)    CS      FrameType       4-5     DICOM
 (0008,9092)    SQ      ReferencedImageEvidenceSequence 1       DICOM
 (0008,9121)    SQ      ReferencedRawDataSequence       1       DICOM
 (0008,9123)    UI      CreatorVersionUID       1       DICOM
 (0018,1201)    TM      TimeOfLastCalibration   1-n     DICOM
 (0018,1202)    DT      DateTimeOfLastCalibration       1       DICOM
 (0018,1203)    DT      CalibrationDateTime     1       DICOM
+(0018,1204)    DA      DateOfManufacture       1       DICOM
+(0018,1205)    DA      DateOfInstallation      1       DICOM
 (0018,1210)    SH      ConvolutionKernel       1-n     DICOM
 (0018,1242)    IS      ActualFrameDuration     1       DICOM
 (0018,1243)    IS      CountRate       1       DICOM
 (0018,980E)    SQ      TransducerBeamSteeringCodeSequence      1       DICOM
 (0018,980F)    SQ      TransducerApplicationCodeSequence       1       DICOM
 (0018,9810)    xs      ZeroVelocityPixelValue  1       DICOM
+(0018,9821)    SQ      PhotoacousticExcitationCharacteristicsSequence  1       DICOM
+(0018,9822)    FD      ExcitationSpectralWidth 1       DICOM
+(0018,9823)    FD      ExcitationEnergy        1       DICOM
+(0018,9824)    FD      ExcitationPulseDuration 1       DICOM
+(0018,9825)    SQ      ExcitationWavelengthSequence    1       DICOM
+(0018,9826)    FD      ExcitationWavelength    1       DICOM
+(0018,9828)    CS      IlluminationTranslationFlag     1       DICOM
+(0018,9829)    CS      AcousticCouplingMediumFlag      1       DICOM
+(0018,982A)    SQ      AcousticCouplingMediumCodeSequence      1       DICOM
+(0018,982B)    FD      AcousticCouplingMediumTemperature       1       DICOM
+(0018,982C)    SQ      TransducerResponseSequence      1       DICOM
+(0018,982D)    FD      CenterFrequency 1       DICOM
+(0018,982E)    FD      FractionalBandwidth     1       DICOM
+(0018,982F)    FD      LowerCutoffFrequency    1       DICOM
+(0018,9830)    FD      UpperCutoffFrequency    1       DICOM
+(0018,9831)    SQ      TransducerTechnologySequence    1       DICOM
+(0018,9832)    SQ      SoundSpeedCorrectionMechanismCodeSequence       1       DICOM
+(0018,9833)    FD      ObjectSoundSpeed        1       DICOM
+(0018,9834)    FD      AcousticCouplingMediumSoundSpeed        1       DICOM
+(0018,9835)    SQ      PhotoacousticImageFrameTypeSequence     1       DICOM
+(0018,9836)    SQ      ImageDataTypeCodeSequence       1       DICOM
 (0018,9900)    LO      ReferenceLocationLabel  1       DICOM
 (0018,9901)    UT      ReferenceLocationDescription    1       DICOM
 (0018,9902)    SQ      ReferenceBasisCodeSequence      1       DICOM
 (0028,2112)    DS      LossyImageCompressionRatio      1-n     DICOM
 (0028,2114)    CS      LossyImageCompressionMethod     1-n     DICOM
 (0028,3000)    SQ      ModalityLUTSequence     1       DICOM
+(0028,3001)    SQ      VariableModalityLUTSequence     1       DICOM
 (0028,3002)    xs      LUTDescriptor   3       DICOM
 (0028,3003)    LO      LUTExplanation  1       DICOM
 (0028,3004)    LO      ModalityLUTType 1       DICOM
 (3002,0050)    SQ      PrimaryFluenceModeSequence      1       DICOM
 (3002,0051)    CS      FluenceMode     1       DICOM
 (3002,0052)    SH      FluenceModeID   1       DICOM
+(3002,0100)    IS      SelectedFrameNumber     1       DICOM
+(3002,0101)    SQ      SelectedFrameFunctionalGroupsSequence   1       DICOM
+(3002,0102)    SQ      RTImageFrameGeneralContentSequence      1       DICOM
+(3002,0103)    SQ      RTImageFrameContextSequence     1       DICOM
+(3002,0104)    SQ      RTImageScopeSequence    1       DICOM
+(3002,0105)    CS      BeamModifierCoordinatesPresenceFlag     1       DICOM
+(3002,0106)    FD      StartCumulativeMeterset 1       DICOM
+(3002,0107)    FD      StopCumulativeMeterset  1       DICOM
+(3002,0108)    SQ      RTAcquisitionPatientPositionSequence    1       DICOM
+(3002,0109)    SQ      RTImageFrameImagingDevicePositionSequence       1       DICOM
+(3002,010A)    SQ      RTImageFramekVRadiationAcquisitionSequence      1       DICOM
+(3002,010B)    SQ      RTImageFrameMVRadiationAcquisitionSequence      1       DICOM
+(3002,010C)    SQ      RTImageFrameRadiationAcquisitionSequence        1       DICOM
+(3002,010D)    SQ      ImagingSourcePositionSequence   1       DICOM
+(3002,010E)    SQ      ImageReceptorPositionSequence   1       DICOM
+(3002,010F)    FD      DevicePositionToEquipmentMappingMatrix  16      DICOM
+(3002,0110)    SQ      DevicePositionParameterSequence 1       DICOM
+(3002,0111)    CS      ImagingSourceLocationSpecificationType  1       DICOM
+(3002,0112)    SQ      ImagingDeviceLocationMatrixSequence     1       DICOM
+(3002,0113)    SQ      ImagingDeviceLocationParameterSequence  1       DICOM
+(3002,0114)    SQ      ImagingApertureSequence 1       DICOM
+(3002,0115)    CS      ImagingApertureSpecificationType        1       DICOM
+(3002,0116)    US      NumberOfAcquisitionDevices      1       DICOM
+(3002,0117)    SQ      AcquisitionDeviceSequence       1       DICOM
+(3002,0118)    SQ      AcquisitionTaskSequence 1       DICOM
+(3002,0119)    SQ      AcquisitionTaskWorkitemCodeSequence     1       DICOM
+(3002,011A)    SQ      AcquisitionSubtaskSequence      1       DICOM
+(3002,011B)    SQ      SubtaskWorkitemCodeSequence     1       DICOM
+(3002,011C)    US      AcquisitionTaskIndex    1       DICOM
+(3002,011D)    US      AcquisitionSubtaskIndex 1       DICOM
+(3002,011E)    SQ      ReferencedBaselineParametersRTRadiationInstanceSequence 1       DICOM
+(3002,011F)    SQ      PositionAcquisitionTemplateIdentificationSequence       1       DICOM
+(3002,0120)    ST      PositionAcquisitionTemplateID   1       DICOM
+(3002,0121)    LO      PositionAcquisitionTemplateName 1       DICOM
+(3002,0122)    SQ      PositionAcquisitionTemplateCodeSequence 1       DICOM
+(3002,0123)    LT      PositionAcquisitionTemplateDescription  1       DICOM
+(3002,0124)    SQ      AcquisitionTaskApplicabilitySequence    1       DICOM
+(3002,0125)    SQ      ProjectionImagingAcquisitionParameterSequence   1       DICOM
+(3002,0126)    SQ      CTImagingAcquisitionParameterSequence   1       DICOM
+(3002,0127)    SQ      KVImagingGenerationParametersSequence   1       DICOM
+(3002,0128)    SQ      MVImagingGenerationParametersSequence   1       DICOM
+(3002,0129)    CS      AcquisitionSignalType   1       DICOM
+(3002,012A)    CS      AcquisitionMethod       1       DICOM
+(3002,012B)    SQ      ScanStartPositionSequence       1       DICOM
+(3002,012C)    SQ      ScanStopPositionSequence        1       DICOM
+(3002,012D)    FD      ImagingSourceToBeamModifierDefinitionPlaneDistance      1       DICOM
+(3002,012E)    CS      ScanArcType     1       DICOM
+(3002,012F)    CS      DetectorPositioningType 1       DICOM
+(3002,0130)    SQ      AdditionalRTAccessoryDeviceSequence     1       DICOM
+(3002,0131)    SQ      DeviceSpecificAcquisitionParameterSequence      1       DICOM
+(3002,0132)    SQ      ReferencedPositionReferenceInstanceSequence     1       DICOM
+(3002,0133)    SQ      EnergyDerivationCodeSequence    1       DICOM
+(3002,0134)    FD      MaximumCumulativeMetersetExposure       1       DICOM
+(3002,0135)    SQ      AcquisitionInitiationSequence   1       DICOM
 (3004,0001)    CS      DVHType 1       DICOM
 (3004,0002)    CS      DoseUnits       1       DICOM
 (3004,0004)    CS      DoseType        1       DICOM
 (3004,000A)    CS      DoseSummationType       1       DICOM
 (3004,000C)    DS      GridFrameOffsetVector   2-n     DICOM
 (3004,000E)    DS      DoseGridScaling 1       DICOM
-(3004,0010)    SQ      RTDoseROISequence       1       DICOM
-(3004,0012)    DS      DoseValue       1       DICOM
 (3004,0014)    CS      TissueHeterogeneityCorrection   1-3     DICOM
 (3004,0040)    DS      DVHNormalizationPoint   3       DICOM
 (3004,0042)    DS      DVHNormalizationDoseValue       1       DICOM
 (3008,0024)    DA      TreatmentControlPointDate       1       DICOM
 (3008,0025)    TM      TreatmentControlPointTime       1       DICOM
 (3008,002A)    CS      TreatmentTerminationStatus      1       DICOM
-(3008,002B)    SH      TreatmentTerminationCode        1       DICOM
 (3008,002C)    CS      TreatmentVerificationStatus     1       DICOM
 (3008,0030)    SQ      ReferencedTreatmentRecordSequence       1       DICOM
 (3008,0032)    DS      SpecifiedPrimaryMeterset        1       DICOM
 (3008,0090)    SQ      ReferencedCalculatedDoseReferenceSequence       1       DICOM
 (3008,0092)    IS      ReferencedCalculatedDoseReferenceNumber 1       DICOM
 (3008,00A0)    SQ      BeamLimitingDeviceLeafPairsSequence     1       DICOM
+(3008,00A1)    SQ      EnhancedRTBeamLimitingDeviceSequence    1       DICOM
+(3008,00A2)    SQ      EnhancedRTBeamLimitingOpeningSequence   1       DICOM
+(3008,00A3)    CS      EnhancedRTBeamLimitingDeviceDefinitionFlag      1       DICOM
+(3008,00A4)    FD      ParallelRTBeamDelimiterOpeningExtents   2-2n    DICOM
 (3008,00B0)    SQ      RecordedWedgeSequence   1       DICOM
 (3008,00C0)    SQ      RecordedCompensatorSequence     1       DICOM
 (3008,00D0)    SQ      RecordedBlockSequence   1       DICOM
 (3010,0087)    SQ      WeekdayFractionPatternSequence  1       DICOM
 (3010,0088)    SQ      DeliveryTimeStructureCodeSequence       1       DICOM
 (3010,0089)    SQ      TreatmentSiteModifierCodeSequence       1       DICOM
-(3010,0090)    CS      RoboticBaseLocationIndicator    1       DICOM
 (3010,0091)    SQ      RoboticPathNodeSetCodeSequence  1       DICOM
 (3010,0092)    UL      RoboticNodeIdentifier   1       DICOM
 (3010,0093)    FD      RTTreatmentSourceCoordinates    3       DICOM
 (2130,0050)    SQ      RETIRED_AnnotationContentSequence       1       DICOM/retired
 (2130,0060)    SQ      RETIRED_ImageOverlayBoxContentSequence  1       DICOM/retired
 (2130,0080)    SQ      RETIRED_PresentationLUTContentSequence  1       DICOM/retired
+(3004,0010)    SQ      RETIRED_RTDoseROISequence       1       DICOM/retired
+(3004,0012)    DS      RETIRED_DoseValue       1       DICOM/retired
 (3006,0044)    DS      RETIRED_ContourSlabThickness    1       DICOM/retired
 (3006,0045)    DS      RETIRED_ContourOffsetVector     3       DICOM/retired
 (3006,0049)    IS      RETIRED_AttachedContours        1-n     DICOM/retired
 (3006,00C0)    SQ      RETIRED_FrameOfReferenceRelationshipSequence    1       DICOM/retired
 (3006,00C2)    UI      RETIRED_RelatedFrameOfReferenceUID      1       DICOM/retired
 (3006,00C4)    CS      RETIRED_FrameOfReferenceTransformationType      1       DICOM/retired
+(3008,002B)    SH      RETIRED_TreatmentTerminationCode        1       DICOM/retired
 (300A,000B)    LO      RETIRED_TreatmentSites  1-n     DICOM/retired
 (300A,0082)    DS      RETIRED_BeamDoseSpecificationPoint      3       DICOM/retired
 (300A,008D)    FL      RETIRED_AverageBeamDosePointDepth       1       DICOM/retired
 (300A,008F)    FL      RETIRED_AverageBeamDosePointSSD 1       DICOM/retired
 (300A,0632)    SQ      RETIRED_ReferencedRTPatientSetupSequence        1       DICOM/retired
 (300A,0650)    UI      RETIRED_PatientSetupUID 1       DICOM/retired
+(3010,0090)    CS      RETIRED_RoboticBaseLocationIndicator    1       DICOM/retired
 (4000,0010)    LT      RETIRED_Arbitrary       1       DICOM/retired
 (4000,4000)    LT      RETIRED_TextComments    1       DICOM/retired
 (4008,0040)    SH      RETIRED_ResultsID       1       DICOM/retired
index 05ac79d7e6a73159cf7cca23c03392106c607527..e47ee49ec15bab50e767ab1419d6acad766e9f8b 100644 (file)
@@ -23,7 +23,7 @@ to an output file (\e dcmfile-out).
 \verbatim
 cdafile-in   CDA input filename to be encapsulated
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section cda2dcm_options OPTIONS
@@ -177,21 +177,21 @@ The application may be fed with some additional input for filling mandatory (and
 optional) attributes in the new DICOM file like patient, study and series
 information:
 
-\li The \e --key option can be used to add further attributes to the DICOM
-    output file.
+- The \e --key option can be used to add further attributes to the DICOM output
+  file.
 
-\li It is also possible to specify sequences, items and nested
-    attributes using the \e --key option. In these cases, a special "path"
-    notation has to be used. Details on this path notation can be found in the
-    documentation of \b dcmodify.
+- It is also possible to specify sequences, items and nested attributes using
+  the \e --key option. In these cases, a special "path" notation has to be
+  used.  Details on this path notation can be found in the documentation of
+  \b dcmodify.
 
-\li The \e --key option can be present more than once.
+- The \e --key option can be present more than once.
 
-\li The value part (after the '=') may be absent causing the attribute to be
-    set with zero length.
+- The value part (after the '=') may be absent causing the attribute to be set
+  with zero length.
 
-\li Please be advised that the \e --key option is applied at the very end, just
-    before saving the DICOM file, so there is no value checking whatsoever.
+- Please be advised that the \e --key option is applied at the very end, just
+  before saving the DICOM file, so there is no value checking whatsoever.
 
 \section cda2dcm_logging LOGGING
 
@@ -277,6 +277,6 @@ It is an error if no data dictionary can be loaded.
 
 \section cda2dcm_copyright COPYRIGHT
 
-Copyright (C) 2018-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2018-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 6ab8391784180d3cf4ec562d93d5c7c12c0962c9..d436cd1d8c7a000f005d742bc38fea646bc625df 100644 (file)
@@ -29,9 +29,9 @@ with a particular transfer syntax.
 \section dcm2json_parameters PARAMETERS
 
 \verbatim
-dcmfile-in    DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-jsonfile-out  JSON output filename (default: stdout)
+jsonfile-out JSON output filename (default: stdout)
 \endverbatim
 
 \section dcm2json_options OPTIONS
@@ -413,6 +413,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcm2json_copyright COPYRIGHT
 
-Copyright (C) 2016-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2016-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 0ec0508b4cb8254510a0298e49024f728b0dea91..438a10113711d5d9d3298687739d187882e95d47 100644 (file)
@@ -22,7 +22,7 @@ creation of the PDF file.
 \section dcm2pdf_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename
+dcmfile-in   DICOM input filename ("-" for stdin)
 
 pdffile-out  PDF output filename
 \endverbatim
@@ -206,6 +206,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcm2pdf_copyright COPYRIGHT
 
-Copyright (C) 2007-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2007-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index ed7006dc53e08f06c4dddac10462b684be834d0e..eb24402eb95f9b3dde4e64fd8d1d99489554cf04 100644 (file)
@@ -32,7 +32,7 @@ with a particular transfer syntax.
 \section dcm2xml_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
 xmlfile-out  XML output filename (default: stdout)
 \endverbatim
@@ -123,15 +123,17 @@ specific character set:
           check all data elements with string values
           (default: only PN, LO, LT, SH, ST, UC and UT)
 
-          # this option is only used for the mapping to an appropriate
-          # XML character encoding, but not for the conversion to UTF-8
+          # this option is only used for the extended check whether
+          # the Specific Character Set (0008,0005) attribute should be
+          # present, but not for the conversion of unaffected element
+          # values to UTF-8 (e.g. element values with a VR of CS)
 
   +U8   --convert-to-utf8
           convert all element values that are affected
           by Specific Character Set (0008,0005) to UTF-8
 
-          # requires support from an underlying character encoding library
-          # (see output of --version on which one is available)
+          # requires support from an underlying character encoding
+          # library (see output of --version on which one is available)
 \endverbatim
 
 \subsection dcm2xml_output_options output options
@@ -393,6 +395,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcm2xml_copyright COPYRIGHT
 
-Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index dce91abf8f197a7fb403b1fe0d8ee318ee6222b2..5cdd6cf3c3acc80813613409f6356d73be8eec86 100644 (file)
@@ -20,9 +20,9 @@ conversion and writes the converted data to an output file (\e dcmfile-out).
 \section dcmconv_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename to write to
+dcmfile-out  DICOM output filename to write to ("-" for stdout)
 \endverbatim
 
 \section dcmconv_options OPTIONS
@@ -387,6 +387,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmconv_copyright COPYRIGHT
 
-Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 7d2553a2605ca7096b52a9c475aaaff8dfb2359a..f332baaae7a1b7a49a45f7339457b49a81c5ad28 100644 (file)
@@ -21,9 +21,9 @@ syntax) and writes the converted image to an output file (\e dcmfile-out).
 \section dcmcrle_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmcrle_options OPTIONS
@@ -258,6 +258,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmcrle_copyright COPYRIGHT
 
-Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 037a9e39464faa787f0200770c3915e76ed12889..1c690e63eaf7956acab5d973c94c0805b1157996 100644 (file)
@@ -21,9 +21,9 @@ and writes the converted image to an output file (\e dcmfile-out).
 \section dcmdrle_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmdrle_options OPTIONS
@@ -247,6 +247,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmdrle_copyright COPYRIGHT
 
-Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany
+Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany
 
 */
index 08256f4d28510edea88f42dbb9f6441a5a25e1e0..f8129e7c87ea3d12b178a437b487d109a5f07c5e 100644 (file)
@@ -33,7 +33,7 @@ with a particular transfer syntax.
 \section dcmdump_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  DICOM input file or directory to be dumped
+dcmfile-in  DICOM input file or directory to be dumped ("-" for stdin)
 \endverbatim
 
 \section dcmdump_options OPTIONS
@@ -306,13 +306,9 @@ color:
   +C   --print-color
          use ANSI escape codes for colored output
 
-         # not available on Windows systems
-
   -C   --no-color
          do not use any ANSI escape codes (default)
 
-         # not available on Windows systems
-
 error handling:
 
   -E   --stop-on-error
@@ -423,6 +419,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmdump_copyright COPYRIGHT
 
-Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index a2b39b4daa8a9f473b9bf2c313f761a819bf4921..fe02bc68f0a65afa64acf5b7934c2ada40bc6710 100644 (file)
@@ -20,7 +20,7 @@ are DICOM files in part 10 format (with meta-header).
 \section dcmftest_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  DICOM input filename to be dumped
+dcmfile-in  DICOM input filename to be checked
 \endverbatim
 
 \section dcmftest_notes NOTES
index d12c0ea846a30c77890f6e5ec19990642ea3789c..b1b1951a7bdccd2053ae73421944d92981ff592a 100644 (file)
@@ -20,8 +20,9 @@ Application Profiles.
 
 Currently, the following profiles are supported:
 
-\li General Purpose CD-R Interchange (STD-GEN-CD)
-\li General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM)
+- General Purpose CD-R Interchange (STD-GEN-CD)
+
+- General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM)
 
 \b dcmmkdir is an extended version of this tool which also supports other
 Media Storage Application Profiles than the general purpose one (e.g. the
@@ -296,6 +297,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmgpdir_copyright COPYRIGHT
 
-Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index d3a7f67289e281071e59dd1f6c66835d3cd86539..93381913f81c7b934ff2151628e4db42a74cd567 100644 (file)
@@ -69,7 +69,7 @@ tags (see PRIVATE TAGS section) and for changing UIDs (CHANGING UIDs section).
 \section dcmodify_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  DICOM input filename(s) to be modified
+dcmfile-in  DICOM input filename(s) to be modified ("-" for stdin/stdout)
 \endverbatim
 
 \section dcmodify_options OPTIONS
@@ -443,19 +443,19 @@ single elements (i.e. a single dictionary name or tag key).
        dcmodify -m "(0010,0010)=A Name" file.dcm
        Changes tag (0010,0010) on 1st level to "A Name".
 
-       This option also permits longer tag paths as demonstrated
-       above for -i. If the leaf element or any intermediate
-       part of the path does not exist, it is not inserted as it
-       would be if using the '-i' option.
+       This option also permits longer tag paths as demonstrated above
+       for -i. If the leaf element or any intermediate part of the path
+       does not exist, it is not inserted as it would be if using the
+       '-i' option.
 
        dcmodify -m "(0010,0010)=A Name" -imt file.dcm
-       Changes tag (0010,0010) on 1st level to "A Name". Due to the
-       given option '-imt', success is returned instead of "tag not found",
-       if the element/item (or any intermediate node in a longer path) does
+       Changes tag (0010,0010) on 1st level to "A Name". Due to the given
+       option '-imt', success is returned instead of "tag not found", if
+       the element/item (or any intermediate node in a longer path) does
        not exist.
 
-       Note that for the '-m' option the last node in the path must be
-       leaf element, i.e. not a sequence or an item.
+       Note that for the '-m' option the last node in the path must be a
+       leaf element, i.e. not a sequence or an item.
 
 -mf  --modify-from-file:
        dcmodify -mf "PixelData=pixel.raw" file.dcm
@@ -477,9 +477,9 @@ single elements (i.e. a single dictionary name or tag key).
 
        dcmodify -e "(0010,0010)" -imt *.dcm
        Erases tag (0010,0010) in all *.dcm files at 1st level. Due to the
-       given option '-imt', success is returned instead of "tag not found",
-       if the element/item (or any intermediate node in a longer path) does
-       not exist.
+       given option '-imt', success is returned instead of "tag not
+       found", if the element/item (or any intermediate node in a longer
+       path) does not exist.
 
 -ea  --erase-all:
        dcmodify -ea "(0010,0010)" *.dcm
@@ -487,18 +487,18 @@ single elements (i.e. a single dictionary name or tag key).
 
 -ep  --erase-private:
        dcmodify -ep *.dcm
-       Deletes all private tags (i.e. tags having an odd group number) from
-       all files matching *.dcm in the current directory.
+       Deletes all private tags (i.e. tags having an odd group number)
+       from all files matching *.dcm in the current directory.
 
 -gst --gen-stud-uid:
        dcmodify -gst file.dcm
-       This generates a new value for the StudyInstanceUID
-       (0020,000d).  Other UIDs are not modified!
+       This generates a new value for the StudyInstanceUID (0020,000d).
+       Other UIDs are not modified!
 
 -gse --gen-ser-uid:
        dcmodify -gse file.dcm
-       This generates a new value for the SeriesInstanceUID
-       (0020,000e).  Other UIDs are not modified!
+       This generates a new value for the SeriesInstanceUID (0020,000e).
+       Other UIDs are not modified!
 
 -gin --gen-inst-uid:
        dcmodify -gin file.dcm
@@ -510,10 +510,9 @@ single elements (i.e. a single dictionary name or tag key).
 
 -nmu --no-meta-uid:
        dcmodify -m "SOPInstanceUID=[UID]" -nmu *.dcm
-       This will modify the SOPInstanceUID to the given [UID],
-       but -nmu avoids, that dcmodify adjusts the
-       MediaStorageSOPInstanceUID in the metaheader, too.
-
+       This will modify the SOPInstanceUID to the given [UID], but -nmu
+       avoids, that dcmodify adjusts the MediaStorageSOPInstanceUID in
+       the metaheader, too.
 \endverbatim
 
 \section dcmodify_error_handling ERROR HANDLING
@@ -590,6 +589,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmodify_copyright COPYRIGHT
 
-Copyright (C) 2003-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2003-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index a9a9a13d0253459d3a3c03fdb0746ef718410632..c06a2cc3a4080268bfb91c00d973d2f7b5a6e4f8 100644 (file)
@@ -24,7 +24,7 @@ create a new DICOM file.
 \verbatim
 dumpfile-in  dump input filename
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dump2dcm_options OPTIONS
@@ -314,6 +314,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dump2dcm_copyright COPYRIGHT
 
-Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 856c87666242a61ca0b054a67f228c631ae67a43..b494c8c94d9631c4ac20e0a1808b7065ea080f83 100644 (file)
@@ -15,10 +15,10 @@ img2dcm [options] imgfile-in... dcmfile-out
 \section img2dcm_description DESCRIPTION
 
 The \b img2dcm tool serves as a conversion tool from a standard image format
-like JPEG (including JPEG-LS) or BMP to DICOM. Different output SOP Classes
-can be selected. The additional information (regarding patients, series, etc.)
+like JPEG (including JPEG-LS) or BMP to DICOM.  Different output SOP Classes
+can be selected.  The additional information (regarding patients, series, etc.)
 stored in the DICOM output file can be extracted from other DICOM files which
-serve as a "template" for the resulting DICOM object. \b img2dcm can also be
+serve as a "template" for the resulting DICOM object.  \b img2dcm can also be
 configured to invent missing DICOM type 1 and type 2 attributes to work even
 without any template dataset.
 
@@ -26,7 +26,7 @@ without any template dataset.
 \verbatim
 imgfile-in   image input filename
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section img2dcm_options OPTIONS
@@ -208,32 +208,32 @@ data set trailing padding (not with --write-dataset):
 For converting a general image format into DICOM format, the \b img2dcm
 application may be fed with some additional input for filling mandatory (and
 optional) attributes in the new DICOM file like patient, study and series
-information. This information can be collected using different approaches,
+information.  This information can be collected using different approaches,
 which can be combined and are applied to the result file in the following
 order:
 
-\li Using the \e --dataset-from option \b img2dcm is forced to import
-    attributes from an existing DICOM file. The given DICOM file is fully
-    imported and serves as the basis for all further export operations.
-    As an exception, the SOP Instance UID is not copied by this option.
-    Also image related data like Rows, Columns etc. is exchanged during
-    conversion. Note that \b img2dcm does not check any other attribute
-    values for validity, e.g. it does not look into sequences to adapt any
-    attributes to the new object (referenced images etc.). Therefore, it is
-    recommended to use the templates in the data directory for (old) SC and
-    VLP objects. See also section "Input Templates".
-
-\li Using the \e --dataset-from-xml option \b img2dcm is also forced to
-    import attributes from an existing file. In this case, however, the
-    file must contain XML data in the format as produced by \b dcm2xml.
-
-\li The \e --study-from and \e --series-from options (mutually exclusive) can
-    be used to import patient, study and series information from an existing
-    DICOM file. If \e --series-from is specified, then the given DICOM file
-    is opened by \b img2dcm and all mandatory information down to the series
-    level is imported. Note that this includes patient, study and series
-    information. In case of \e --study-from, the series information is
-    excluded. The following attributes are taken over:
+- Using the \e --dataset-from option \b img2dcm is forced to import attributes
+  from an existing DICOM file.  The given DICOM file is fully imported and
+  serves as the basis for all further export operations.  As an exception, the
+  SOP Instance UID is not copied by this option.  Also image related data like
+  Rows, Columns etc. is exchanged during conversion.  Note that \b img2dcm does
+  not check any other attribute values for validity, e.g. it does not look into
+  sequences to adapt any attributes to the new object (referenced images etc.).
+  Therefore, it is recommended to use the templates in the data directory for
+  (old) SC and VLP objects.  See also section "Input Templates".  As an
+  alternative to option \e --dataset-from the mutually exclusive option
+  \e --dataset-from-xml can be used.  In this case, however, the file must
+  contain XML data in the format as produced by \b dcm2xml.
+
+- The \e --study-from and \e --series-from options can be used to import
+  patient, study and series information from an existing DICOM file.  If
+  \e --series-from is specified, then the given DICOM file is opened by
+  \b img2dcm and all mandatory information down to the series level is
+  imported.  Note that this includes patient, study and series information.
+  In case of \e --study-from, the series information is excluded.  Using
+  \e --study-from and \e --series-from at the same time does make sense.
+  If both options are provided on the command line, the rightmost option wins.
+  The following attributes are taken over:
     \verbatim
       Patient Level:
         Patient's Name
@@ -256,44 +256,46 @@ order:
         Manufacturer
     \endverbatim
 
-\li With the \e --insert-type2 and \e --invent-type1 options (both enabled per
-    default), missing attributes (type 2 attributes) and/or missing attribute
-    values (for type 1 attributes) are automatically added and invented by
-    \b img2dcm. Please note that these options are only evaluated if option
-    \e --do-checks is enabled (default). If the \e --no-checks options is
-    enabled, no automatic attribute insertion will take place.
-
-\li The \e --key option can be used to add further attributes to the DICOM
-    output file. It is also possible to specify sequences, items and nested
-    attributes using the \e --key option. In these cases, a special "path"
-    notation has to be used. Details on this path notation can be found in the
-    documentation of \b dcmodify. The \e --key option can be present more than
-    once. The value part (after the '=') may be absent causing the attribute to
-    be set with zero length. Please be advised that the \e --key option is
-    applied at the very end, just before saving the DICOM file, so there is no
-    value checking whatsoever.
+- With the \e --insert-type2 and \e --invent-type1 options (both enabled per
+  default), missing attributes (type 2 attributes) and/or missing attribute
+  values (for type 1 attributes) are automatically added and invented by
+  \b img2dcm.  Please note that these options are only evaluated if option
+  \e --do-checks is enabled (default).  If the \e --no-checks options is
+  enabled, no automatic attribute insertion will take place.
+
+- The \e --key option can be used to add further attributes to the DICOM output
+  file.  It is also possible to specify sequences, items and nested attributes
+  using the \e --key option.  In these cases, a special "path" notation has to
+  be used.  Details on this path notation can be found in the documentation of
+  \b dcmodify.  The \e --key option can be present more than once.  The value
+  part (after the '=') may be absent causing the attribute to be set with zero
+  length.  Please be advised that the \e --key option is applied at the very
+  end, just before saving the DICOM file, so there is no value checking
+  whatsoever.
 
 \subsection img2dcm_uids UIDs
 
 New Study and Series Instance UIDs are generated <b>if necessary</b> after
-applying the \e --study-from and \e --series options. If Study Instance UID or
-Series Instance UID are not present after these steps, they are newly generated,
-independently from each other.
+applying the \e --study-from and \e --series-from options.  If Study Instance
+UID or Series Instance UID are not present after these steps, they are newly
+generated, independently from each other.
+
 A contrary behavior is chosen for the SOP Instance UID that one could expect
-to be taken over when using the \e --dataset-from option. This is \b not the
-case, the SOP Instance UID is \b not copied to the new object. This should
-be the desirable behavior for most use cases. However, if a certain SOP
-Instance UID should be inserted into the new object, the \e --key option should
-be used.
+to be taken over when using the \e --dataset-from or \e --dataset-from-xml
+option.  This is \b not the case, the SOP Instance UID is \b not copied to the
+new object.  This should be the desirable behavior for most use cases.
+However, if a certain SOP Instance UID should be inserted into the new object,
+the \e --key option should be used.
 
 \subsection img2dcm_input_templates Input Templates
 
 For supporting the conversion into DICOM, \b img2dcm comes with some
 pre-defined templates which can be used for the \e --dataset-from option (see
-sample files \e SC.dump and \e VLP.dump). These templates should be filled with
-the desired values and then must be dumped (converted) to a DICOM file before
-actually being used with \b img2dcm. Use \b dump2dcm to convert the dump to
-DICOM. Example:
+sample files \e SC.dump and \e VLP.dump).  These templates should be filled
+with the desired values and then must be dumped (converted) to a DICOM file
+before actually being used with \b img2dcm.  Use \b dump2dcm to convert the
+dump to DICOM.  Example:
+
 \verbatim
   dump2dcm SC.dump SC.dcm
 \endverbatim
@@ -301,7 +303,7 @@ DICOM. Example:
 For Ophthalmic Photography images, XML templates are provided
 (see sample file \e OP_template_utf_8.xml and \e OP_template_latin_1.xml).
 
-It is possible to use any DICOM file as a template. Please note that the
+It is possible to use any DICOM file as a template.  Please note that the
 complete DICOM dataset is imported; hence, it should be assured that only
 attributes are present which should be part of the constructed DICOM object.
 The SOP Class UID and the Pixel Data attributes (including attributes like
@@ -312,18 +314,18 @@ Rows, Columns etc.) are not copied but replaced by \b img2dcm during conversion.
 When an input template is loaded using \e --dataset-from or \e --dataset-from-xml,
 the specific character set of that template is used for the generated DICOM file.
 If the \e --study-from or \e --series-from options are used additionally,
-img2dcm will try to convert the character set of these attributes to that
+\b img2dcm will try to convert the character set of these attributes to that
 of the template, and will report an error if that is not possible.
 
 If the \e --study-from or \e --series-from options are used without a template,
 the specific character set of this source is used for the generated DICOM file.
-Any keys specified on the command line with the \e --key option are treated
-as raw bytes and override any attributes that may already be present due
-to a template or study/series file. Therefore, care should be taken to not
-specify a specific character set on the command line if one might be loaded
-from another file. It is also the user's responsibility to ensure that
-attribute values specified on the command line use the correct encoding,
-as no conversion will take place before the values are stored in the DICOM file.
+Any keys specified on the command line with the \e --key option are treated as
+raw bytes and override any attributes that may already be present due to a
+template or study/series file.  Therefore, care should be taken to not specify
+a specific character set on the command line if one might be loaded from
+another file.  It is also the user's responsibility to ensure that attribute
+values specified on the command line use the correct encoding, as no conversion
+will take place before the values are stored in the DICOM file.
 
 \subsection img2dcm_input_plugins Input Plugins
 
@@ -334,30 +336,23 @@ as input.
 
 For JPEG, the original JPEG from the source file is not decoded but extracted
 and slightly transformed (e.g. JFIF header is cut off) to allow fast conversion
-of even big JPEG files without the need of decoding and re-encoding. The JPEG
+of even big JPEG files without the need of decoding and re-encoding.  The JPEG
 plugin chooses the necessary output transfer syntax automatically depending on
-the actual encoding of the data inside the JPEG file. Therefore, the following
+the actual encoding of the data inside the JPEG file.  Therefore, the following
 Transfer Syntaxes (and their corresponding JPEG encodings) are used by the JPEG
 plugin:
 
-<ul>
-
-<li>JPEG Coding Process 1
-<br>Baseline, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8 Bit
-<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.50
-</li>
+- JPEG Coding Process 1<br>
+  Baseline, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8 Bit<br>
+  Transfer Syntax UID = 1.2.840.10008.1.2.4.50
 
-<li>JPEG Coding Process 2 (8-bit) and 4 (12-bit)
-<br>Extended, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8/12 Bit
-<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.51
-</li>
+- JPEG Coding Process 2 (8-bit) and 4 (12-bit)<br>
+  Extended, Lossy, Non-Hierarchical, Sequential, DCT, Huffman, 8/12 Bit<br>
+  Transfer Syntax UID = 1.2.840.10008.1.2.4.51
 
-<li>JPEG Coding Process 10 (8-bit) and 12 (12-bit)
-<br>Full Progression, lossy, Non-Hierarch., Progressive, DCT, Huffman, 8/12 Bit
-<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.55
-</li>
-
-</ul>
+- JPEG Coding Process 10 (8-bit) and 12 (12-bit)<br>
+  Full Progression, lossy, Non-Hierarch., Progressive, DCT, Huffman, 8/12 Bit<br>
+  Transfer Syntax UID = 1.2.840.10008.1.2.4.55
 
 Color and grayscale images are supported.
 
@@ -369,24 +364,24 @@ JPEG lossless encoding as well as any arithmetic or hierarchical JPEG encoding
 modes are not supported by the plugin.
 
 JFIF (JPEG File Interchange Format) information facilitates optional APPn
-markers in a JPEG file. Many digital cameras do not integrate such JFIF
-information into the JPEG output they create. For example, JFIF contains
-information about the pixel aspect ratio of the compressed image. If you want
+markers in a JPEG file.  Many digital cameras do not integrate such JFIF
+information into the JPEG output they create.  For example, JFIF contains
+information about the pixel aspect ratio of the compressed image.  If you want
 the \b img2dcm application to insist on a JFIF header in the JPEG stream, you
 can use the option \e --insist-on-jfif which will abort if no JFIF information
-can be found. By default, missing JFIF information is ignored.
+can be found.  By default, missing JFIF information is ignored.
 
 For DICOM it is kind of a "gray zone", whether the integration of JFIF (or any
 other APPn) data into the DICOM object's internal JPEG stream is allowed or
-not. However, the most reliable approach is to cut those markers and their
-information off the JPEG stream. This approach is also taken by the \b img2dcm
-application. By default, all APPn markers are cut off from the original JPEG
-stream. However, if you want to keep other APPn markers than JFIF (e.g. EXIF
+not.  However, the most reliable approach is to cut those markers and their
+information off the JPEG stream.  This approach is also taken by the \b img2dcm
+application.  By default, all APPn markers are cut off from the original JPEG
+stream.  However, if you want to keep other APPn markers than JFIF (e.g. EXIF
 information) inside the DICOM stream, the option \e --keep-appn does the trick.
 It should also be slightly faster than cutting off APPn information, because it
-is not necessary to scan the whole JPEG stream for such data. As stated before,
-JFIF information is always removed by \b img2dcm. However, when using this
-option, the APP2 marker is retained, but \b img2dcm does not create an
+is not necessary to scan the whole JPEG stream for such data.  As stated
+before, JFIF information is always removed by \b img2dcm. However, when using
+this option, the APP2 marker is retained, but \b img2dcm does not create an
 equivalent ICC Profile (0028,2000) attribute.
 
 \subsubsection img2dcm_jpegls_input_plugin JPEG-LS Input Plugin
@@ -405,126 +400,102 @@ depending on the actual encoding of the data inside the JPEG-LS file.
 Therefore, the following Transfer Syntaxes (and there corresponding JPEG-LS
 encodings) are used by the JPEG-LS plugin:
 
-<ul>
-
-<li>JPEG-LS Lossless Image Compression
-<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.80
-</li>
-
-<li>JPEG-LS Lossy (Near-Lossless) Image Compression
-<br>Transfer Syntax UID = 1.2.840.10008.1.2.4.81
-</li>
+- JPEG-LS Lossless Image Compression<br>
+  Transfer Syntax UID = 1.2.840.10008.1.2.4.80
 
-</ul>
+- JPEG-LS Lossy (Near-Lossless) Image Compression<br>
+  Transfer Syntax UID = 1.2.840.10008.1.2.4.81
 
-Color and grayscale images are supported. CP-1843 enforce that the value of
+Color and grayscale images are supported.  CP-1843 enforce that the value of
 Planar Configuration (0028,0006) is irrelevant since the manner of encoding
 components is specified in the JPEG-LS bit stream as component, line or sample
-interleaved, hence it shall be set to 0. Since no color transformation
+interleaved, hence it shall be set to 0.  Since no color transformation
 specific for JPEG-LS is currently defined in DICOM, it is assumed that the
 JPEG-LS stream is encoded in RGB color space.
 
 For DICOM it is clear that SPIFF header should not be present in the DICOM
-object's internal JPEG-LS stream. The plugin will simply rejects any input
+object's internal JPEG-LS stream.  The plugin will simply rejects any input
 JPEG-LS file containing a SPIFF header at marker APP8.
 
 By default, all APPn markers are cut off from the original JPEG-LS stream.
-However, if you want to keep APPn markers (e. g. APP8/HP color transform
+However, if you want to keep APPn markers (e.g. APP8/HP color transform
 information, aka 'mrfx') inside the DICOM stream, the option \e --keep-appn
-does the trick. Pay attention that the plugin will check the actual color
-transform specified in the APP8/HP marker. Since DICOM does not allow any color
-transform to be specified in the APP8 marker, only a value of `0` (no color
-transform) is accepted.
+does the trick.  Pay attention that the plugin will check the actual color
+transform specified in the APP8/HP marker.  Since DICOM does not allow any
+color transform to be specified in the APP8 marker, only a value of `0` (no
+color transform) is accepted.
 
 \subsubsection img2dcm_bmp_input_plugin BMP Input Plugin
 
-\b img2dcm supports BMP as input format. However, so far only the most common
-BMP images are supported. In particular, BMP images which use bit fields or
-run length encoding will be rejected. Such images are uncommon. Input images
+\b img2dcm supports BMP as input format.  However, so far only the most common
+BMP images are supported.  In particular, BMP images which use bit fields or
+run length encoding will be rejected.  Such images are uncommon.  Input images
 will either be converted into a DICOM image with RGB color model and a bit
 depth of 24, or into an image with MONOCHROME2 color model an 8 bits per pixel.
 There are no specific options for fine-tuning BMP format conversion.
 
 \subsection img2dcm_output_plugins Output Plugins
 
-The desired output SOP Class can be selected on the command line. Currently,
+The desired output SOP Class can be selected on the command line.  Currently,
 export plugins for the Secondary Capture Image SOP Class (default, option
 \e -sc), the Multiframe Secondary Capture Image SOP Classes (option \e -nsc),
 Visible Light Photographic Image SOP Class (option \e -vl), and the Ophthalmic
-Photography Image SOP Classes (option \e -oph) are available. Please note that
+Photography Image SOP Classes (option \e -oph) are available.  Please note that
 the first one is deprecated according to the DICOM standard but is selected as
-a default because it is widely supported. Future versions of \b img2dcm might
+a default because it is widely supported.  Future versions of \b img2dcm might
 provide further output plugins for other SOP Classes.
 
 For the new Secondary Capture SOP Classes, it is not possible to specify which
-specific SOP Class should be used for output. That is because these new SOP
+specific SOP Class should be used for output.  That is because these new SOP
 classes are differentiated from each other by color depth (1/8/16) and the
-fact whether the image is black/white or color. That is why \b img2dcm decides
+fact whether the image is black/white or color.  That is why \b img2dcm decides
 during conversion, which output SOP Class is suitable for a given source image.
 
 \section img2dcm_examples EXAMPLES
 
 Here are some examples that show how the \b img2dcm application can be used.
 
-<ol>
-
-<li>
-img2dcm image.jpg out.dcm
-<br>Read JPEG file "image.jpg", convert to the old Secondary Capture SOP Class
-and save the result to DICOM file "out.dcm". This is the easiest way of using
-\b img2dcm. Any type 1 and type 2 attributes required for writing valid objects
-of this SOP Class are inserted automatically.
-</li>
-
-<li>
-img2dcm -i BMP image.bmp out.dcm
-<br>Same as above but tells img2dcm to read a BMP file instead of JPEG.
-</li>
-
-<li>
-img2dcm image.jpg out.dcm -vlp -k "PatientName=Bond^James"
-<br>Same as first example, but writes Visible Light Photographic Image object
-to "out.dcm" and sets PatientName to "Bond^James" which otherwise would be
-left empty.
-</li>
-
-<li>
-img2dcm image.jpg out.dcm --series-from template.dcm -k
-"PatientName=Bond^James"
-<br>Same as 1), but imports patient/study/series information from DICOM file
-"template.dcm". Please note that attribute PatientName will contain
-"Bond^James" at the end, any value from "template.dcm" will be overwritten.
-That is, because the -k option is applied at the very end of the conversion
-pipeline (see above).
-</li>
-
-<li>
-img2dcm image.jpg out.dcm --no-checks
-<br>Same as 1), but does not perform any attribute checking and no type 1 and
-type 2 attribute insertion! So in this case, an invalid DICOM object would be
-generated. This can be interesting if the output file is not meant to be
-completed but will undergo further transformations, e.g. adding attributes
-using \b dcmodify. Only use option \e --no-checks if you know what you are
-doing!
-</li>
-
-<li>
-img2dcm image.jpg out.dcm --no-type1-invent
-<br>Same as 1), but does not insert missing type 1 attributes and/or their
-values. Type 2 attributes will be inserted. Note that in this case it must be
-assured that all type 1 attributes are provided by other means, i. e. by adding
-them with the \e --key option. Otherwise, \b img2dcm will report an error and
-will stop converting.
-</li>
-
-<li>
-img2dcm image.jpg out.dcm --keep-appn --insist-on-jfif
-<br>Same as 1), but takes over APPn information like EXIF into the DICOM
-object's resulting JPEG stream. Further, \e --insist-on-jfif will force
-\b img2dcm to abort if no JFIF information is existent in the source file.
-</li>
-
-</ol>
+-# img2dcm image.jpg out.dcm<br>
+   Read JPEG file "image.jpg", convert to the old Secondary Capture SOP Class
+   and save the result to DICOM file "out.dcm".  This is the easiest way of
+   using \b img2dcm.  Any type 1 and type 2 attributes required for writing
+   valid objects of this SOP Class are inserted automatically.
+
+-# img2dcm -i BMP image.bmp out.dcm<br>
+   Same as above but tells \b img2dcm to read a BMP file instead of JPEG.
+
+-# img2dcm image.jpg out.dcm -vlp -k "PatientName=Bond^James"<br>
+   Same as first example, but writes Visible Light Photographic Image object
+   to "out.dcm" and sets PatientName to "Bond^James" which otherwise would be
+   left empty.
+
+-# img2dcm image.jpg out.dcm --series-from template.dcm -k
+   "PatientName=Bond^James"<br>
+   Same as 1), but imports patient/study/series information from DICOM file
+   "template.dcm".  Please note that attribute PatientName will contain
+   "Bond^James" at the end, any value from "template.dcm" will be overwritten.
+   That is, because the -k option is applied at the very end of the conversion
+   pipeline (see above).
+
+-# img2dcm image.jpg out.dcm --no-checks<br>
+   Same as 1), but does not perform any attribute checking and no type 1 and
+   type 2 attribute insertion! So in this case, an invalid DICOM object would
+   be generated.  This can be interesting if the output file is not meant to be
+   completed but will undergo further transformations, e.g. adding attributes
+   using \b dcmodify.  Only use option \e --no-checks if you know what you are
+   doing!
+
+-# img2dcm image.jpg out.dcm --no-type1-invent<br>
+   Same as 1), but does not insert missing type 1 attributes and/or their
+   values.  Type 2 attributes will be inserted.  Note that in this case it must
+   be assured that all type 1 attributes are provided by other means, i.e. by
+   adding them with the \e --key option.  Otherwise, \b img2dcm will report an
+   error and will stop converting.
+
+-# img2dcm image.jpg out.dcm --keep-appn --insist-on-jfif<br>
+   Same as 1), but takes over APPn information like EXIF into the DICOM
+   object's resulting JPEG stream.  Further, \e --insist-on-jfif will force
+   \b img2dcm to abort if no JFIF information is existent in the source file.
 
 \section img2dcm_logging LOGGING
 
@@ -598,6 +569,6 @@ Photography images
 
 \section img2dcm_copyright COPYRIGHT
 
-Copyright (C) 2007-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2007-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 7c2755ffe0db9fb7f025e782c0c839c395cc7c57..0fd97ab1fdf8aa9f53f29244395a76b155df70f4 100644 (file)
@@ -23,7 +23,7 @@ to an output file (\e dcmfile-out).
 \verbatim
 pdffile-in   PDF input filename to be encapsulated
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section pdf2dcm_options OPTIONS
@@ -163,25 +163,25 @@ data set trailing padding (not with --write-dataset):
 
 \subsection pdf2dcm_attribute_sources Attribute Sources
 
-The application may be fed with some additional input for filling mandatory (and
-optional) attributes in the new DICOM file like patient, study and series
+The application may be fed with some additional input for filling mandatory
+(and optional) attributes in the new DICOM file like patient, study and series
 information:
 
-\li The \e --key option can be used to add further attributes to the DICOM
-    output file.
+- The \e --key option can be used to add further attributes to the DICOM output
+  file.
 
-\li It is also possible to specify sequences, items and nested
-    attributes using the \e --key option. In these cases, a special "path"
-    notation has to be used. Details on this path notation can be found in the
-    documentation of \b dcmodify.
+- It is also possible to specify sequences, items and nested attributes using
+  the \e --key option. In these cases, a special "path" notation has to be
+  used.  Details on this path notation can be found in the documentation of
+  \b dcmodify.
 
-\li The \e --key option can be present more than once.
+- The \e --key option can be present more than once.
 
-\li The value part (after the '=') may be absent causing the attribute to be
-    set with zero length.
+- The value part (after the '=') may be absent causing the attribute to be set
+  with zero length.
 
-\li Please be advised that the \e --key option is applied at the very end, just
-    before saving the DICOM file, so there is no value checking whatsoever.
+- Please be advised that the \e --key option is applied at the very end, just
+  before saving the DICOM file, so there is no value checking whatsoever.
 
 \section pdf2dcm_logging LOGGING
 
@@ -271,6 +271,6 @@ It is an error if no data dictionary can be loaded.
 
 \section pdf2dcm_copyright COPYRIGHT
 
-Copyright (C) 2005-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2005-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 29c41ed690e23b1ebdc0940e1ed4b5b13a94afbd..242e12a22ddb7b4ad70a89895d63c0ad30ebb9bc 100644 (file)
@@ -23,7 +23,7 @@ to an output file (\e dcmfile-out).
 \verbatim
 stlfile-in   STL input filename to be encapsulated
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section stl2dcm_options OPTIONS
@@ -183,25 +183,25 @@ data set trailing padding (not with --write-dataset):
 
 \subsection stl2dcm_attribute_sources Attribute Sources
 
-The application may be fed with some additional input for filling mandatory (and
-optional) attributes in the new DICOM file like patient, study and series
+The application may be fed with some additional input for filling mandatory
+(and optional) attributes in the new DICOM file like patient, study and series
 information:
 
-\li The \e --key option can be used to add further attributes to the DICOM
-    output file.
+- The \e --key option can be used to add further attributes to the DICOM output
+  file.
 
-\li It is also possible to specify sequences, items and nested
-    attributes using the \e --key option. In these cases, a special "path"
-    notation has to be used. Details on this path notation can be found in the
-    documentation of \b dcmodify.
+- It is also possible to specify sequences, items and nested attributes using
+  the \e --key option. In these cases, a special "path" notation has to be
+  used.  Details on this path notation can be found in the documentation of
+  \b dcmodify.
 
-\li The \e --key option can be present more than once.
+- The \e --key option can be present more than once.
 
-\li The value part (after the '=') may be absent causing the attribute to be
-    set with zero length.
+- The value part (after the '=') may be absent causing the attribute to be set
+  with zero length.
 
-\li Please be advised that the \e --key option is applied at the very end, just
-    before saving the DICOM file, so there is no value checking whatsoever.
+- Please be advised that the \e --key option is applied at the very end, just
+  before saving the DICOM file, so there is no value checking whatsoever.
 
 \section stl2dcm_logging LOGGING
 
@@ -287,6 +287,6 @@ It is an error if no data dictionary can be loaded.
 
 \section stl2dcm_copyright COPYRIGHT
 
-Copyright (C) 2018-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2018-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index ffaac82f7bde2f0f3a8939a1ba3205239286f626..90d7c1d7b0fb3cbf457199d7e2eae2027d9fbe76 100644 (file)
@@ -23,9 +23,9 @@ validate against the DTD (Document Type Definition) which is described in file
 \section xml2dcm_parameters PARAMETERS
 
 \verbatim
-xmlfile-in   XML input filename to be converted (stdin: "-")
+xmlfile-in   XML input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section xml2dcm_options OPTIONS
@@ -351,6 +351,6 @@ It is an error if no data dictionary can be loaded.
 
 \section xml2dcm_copyright COPYRIGHT
 
-Copyright (C) 2003-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2003-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index efe8edbe6e78e48c33c8010c2bc251b25e10d81f..55fa5c59e6813ceaf375ab25eeb2beae36ff3472 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2022, OFFIS e.V.
+ *  Copyright (C) 1997-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -249,7 +249,7 @@ public:
    */
   static OFCondition convertToSecondaryCapture(DcmItem *dataset);
 
-  /** create new SOP instance UID and Source Image Sequence
+  /** create new SOP Instance UID and Source Image Sequence
    *  referencing the old SOP instance (if present)
    *  @param dataset dataset to be modified
    *  @param purposeOfReferenceCodingScheme coding scheme designator for purpose of reference code sequence
@@ -263,7 +263,15 @@ public:
     const char *purposeOfReferenceCodeValue = NULL,
     const char *purposeOfReferenceCodeMeaning = NULL);
 
-  /** set first value of Image Type to DERIVED.
+  /** update value of the Image Type element (if needed).
+   *  Three cases are handled by this method:
+   *    1. The Image Type element is not present or has an empty value.
+   *    2. The Image Type element is present and has a single value only.
+   *    3. The Image Type element is present and has two or more values.
+   *
+   *  For case 1, nothing is done. An empty value means "unknown" for Type 2.<br>
+   *  For case 2, the value "DERIVED\SECONDARY" is used (VM is 2-n).<br>
+   *  For case 3, the first value is replaced by the string "DERIVED".
    *  @param dataset dataset to be modified
    *  @return EC_Normal if successful, an error code otherwise
    */
index b31e8e282d72847cb3e8e6c5fe39ef81c6d2f85f..cfbf63d2ea11f23d782f00b11769c6ea4d83ddb5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2022, OFFIS e.V.
+ *  Copyright (C) 2002-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1128,6 +1128,18 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface
                                               const OFString &referencedFileID,
                                               const OFFilename &sourceFilename);
 
+    /** create or update inventory record and copy required values from dataset
+     *  @param record record to be updated, use NULL to create a new one
+     *  @param fileformat DICOM dataset of the current file
+     *  @param referencedFileID value of the Referenced File ID attribute
+     *  @param sourceFilename name of the source DICOM file
+     *  @return pointer to new or updated record, NULL if an error occurred
+     */
+    DcmDirectoryRecord *buildInventoryRecord(DcmDirectoryRecord *record,
+                                             DcmFileFormat *fileformat,
+                                             const OFString &referencedFileID,
+                                             const OFFilename &sourceFilename);
+
     /** create or update image record and copy required values from dataset
      *  @param record record to be updated, use NULL to create a new one
      *  @param fileformat DICOM dataset of the current file
@@ -1231,7 +1243,9 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface
      */
     void inventMissingSeriesLevelAttributes(DcmDirectoryRecord *parent);
 
-    /** invent missing type 1 attributes for all child records (from instance level)
+    /** invent missing type 1 attributes for all child records (from instance level).
+     *  This method is currently limited to the identifying instance-level attributes
+     *  such as Instance Number (0020,0013) or Overlay Number (0020,0022).
      *  @param parent invent missing attributes for all children of this record
      */
     void inventMissingInstanceLevelAttributes(DcmDirectoryRecord *parent);
index b739f0c5d0da81b997aa2b75859b323f810143b2..848c402d8d38b545304a165dab448edf17bf642c 100644 (file)
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad2
-**   Date: 2022-10-17 21:04:18
+**   Date: 2023-07-14 12:18:43
 **   Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdeftag
 **
 **   From: ../data/dicom.dic
 
 #include "dcmtk/dcmdata/dctagkey.h"
 
-#define DCM_DICT_DEFTAG_BUILD_DATE "2022-10-17 21:04:18"
+#define DCM_DICT_DEFTAG_BUILD_DATE "2023-07-14 12:18:43"
 
 
 /*
 ** Fixed Tags in ascending (gggg,eeee) order.
-** Number of entries: 4991
+** Number of entries: 5073
 ** Tags with a repeating component (repeating tags) are listed later.
 */
 #define DCM_CommandGroupLength                   DcmTagKey(0x0000, 0x0000)
 #define DCM_ScopeOfInventorySequence             DcmTagKey(0x0008, 0x0400)
 #define DCM_InventoryPurpose                     DcmTagKey(0x0008, 0x0401)
 #define DCM_InventoryInstanceDescription         DcmTagKey(0x0008, 0x0402)
-#define DCM_InventoryContentLevel                DcmTagKey(0x0008, 0x0403)
+#define DCM_InventoryLevel                       DcmTagKey(0x0008, 0x0403)
 #define DCM_ItemInventoryDateTime                DcmTagKey(0x0008, 0x0404)
 #define DCM_RemovedFromOperationalUse            DcmTagKey(0x0008, 0x0405)
 #define DCM_ReasonForRemovalCodeSequence         DcmTagKey(0x0008, 0x0406)
 #define DCM_StoredInstanceTransferSyntaxUID      DcmTagKey(0x0008, 0x040e)
 #define DCM_ExtendedMatchingMechanisms           DcmTagKey(0x0008, 0x040f)
 #define DCM_RangeMatchingSequence                DcmTagKey(0x0008, 0x0410)
-#define DCM_UIDListMatchingSequence              DcmTagKey(0x0008, 0x0411)
+#define DCM_ListOfUIDMatchingSequence            DcmTagKey(0x0008, 0x0411)
 #define DCM_EmptyValueMatchingSequence           DcmTagKey(0x0008, 0x0412)
 #define DCM_GeneralMatchingSequence              DcmTagKey(0x0008, 0x0413)
 #define DCM_RequestedStatusInterval              DcmTagKey(0x0008, 0x0414)
 #define DCM_TimeOfLastCalibration                DcmTagKey(0x0018, 0x1201)
 #define DCM_DateTimeOfLastCalibration            DcmTagKey(0x0018, 0x1202)
 #define DCM_CalibrationDateTime                  DcmTagKey(0x0018, 0x1203)
+#define DCM_DateOfManufacture                    DcmTagKey(0x0018, 0x1204)
+#define DCM_DateOfInstallation                   DcmTagKey(0x0018, 0x1205)
 #define DCM_ConvolutionKernel                    DcmTagKey(0x0018, 0x1210)
 #define DCM_RETIRED_UpperLowerPixelValues        DcmTagKey(0x0018, 0x1240)
 #define DCM_ActualFrameDuration                  DcmTagKey(0x0018, 0x1242)
 #define DCM_TransducerBeamSteeringCodeSequence   DcmTagKey(0x0018, 0x980e)
 #define DCM_TransducerApplicationCodeSequence    DcmTagKey(0x0018, 0x980f)
 #define DCM_ZeroVelocityPixelValue               DcmTagKey(0x0018, 0x9810)
+#define DCM_PhotoacousticExcitationCharacteristicsSequence DcmTagKey(0x0018, 0x9821)
+#define DCM_ExcitationSpectralWidth              DcmTagKey(0x0018, 0x9822)
+#define DCM_ExcitationEnergy                     DcmTagKey(0x0018, 0x9823)
+#define DCM_ExcitationPulseDuration              DcmTagKey(0x0018, 0x9824)
+#define DCM_ExcitationWavelengthSequence         DcmTagKey(0x0018, 0x9825)
+#define DCM_ExcitationWavelength                 DcmTagKey(0x0018, 0x9826)
+#define DCM_IlluminationTranslationFlag          DcmTagKey(0x0018, 0x9828)
+#define DCM_AcousticCouplingMediumFlag           DcmTagKey(0x0018, 0x9829)
+#define DCM_AcousticCouplingMediumCodeSequence   DcmTagKey(0x0018, 0x982a)
+#define DCM_AcousticCouplingMediumTemperature    DcmTagKey(0x0018, 0x982b)
+#define DCM_TransducerResponseSequence           DcmTagKey(0x0018, 0x982c)
+#define DCM_CenterFrequency                      DcmTagKey(0x0018, 0x982d)
+#define DCM_FractionalBandwidth                  DcmTagKey(0x0018, 0x982e)
+#define DCM_LowerCutoffFrequency                 DcmTagKey(0x0018, 0x982f)
+#define DCM_UpperCutoffFrequency                 DcmTagKey(0x0018, 0x9830)
+#define DCM_TransducerTechnologySequence         DcmTagKey(0x0018, 0x9831)
+#define DCM_SoundSpeedCorrectionMechanismCodeSequence DcmTagKey(0x0018, 0x9832)
+#define DCM_ObjectSoundSpeed                     DcmTagKey(0x0018, 0x9833)
+#define DCM_AcousticCouplingMediumSoundSpeed     DcmTagKey(0x0018, 0x9834)
+#define DCM_PhotoacousticImageFrameTypeSequence  DcmTagKey(0x0018, 0x9835)
+#define DCM_ImageDataTypeCodeSequence            DcmTagKey(0x0018, 0x9836)
 #define DCM_ReferenceLocationLabel               DcmTagKey(0x0018, 0x9900)
 #define DCM_ReferenceLocationDescription         DcmTagKey(0x0018, 0x9901)
 #define DCM_ReferenceBasisCodeSequence           DcmTagKey(0x0018, 0x9902)
 #define DCM_LossyImageCompressionRatio           DcmTagKey(0x0028, 0x2112)
 #define DCM_LossyImageCompressionMethod          DcmTagKey(0x0028, 0x2114)
 #define DCM_ModalityLUTSequence                  DcmTagKey(0x0028, 0x3000)
+#define DCM_VariableModalityLUTSequence          DcmTagKey(0x0028, 0x3001)
 #define DCM_LUTDescriptor                        DcmTagKey(0x0028, 0x3002)
 #define DCM_LUTExplanation                       DcmTagKey(0x0028, 0x3003)
 #define DCM_ModalityLUTType                      DcmTagKey(0x0028, 0x3004)
 #define DCM_PrimaryFluenceModeSequence           DcmTagKey(0x3002, 0x0050)
 #define DCM_FluenceMode                          DcmTagKey(0x3002, 0x0051)
 #define DCM_FluenceModeID                        DcmTagKey(0x3002, 0x0052)
+#define DCM_SelectedFrameNumber                  DcmTagKey(0x3002, 0x0100)
+#define DCM_SelectedFrameFunctionalGroupsSequence DcmTagKey(0x3002, 0x0101)
+#define DCM_RTImageFrameGeneralContentSequence   DcmTagKey(0x3002, 0x0102)
+#define DCM_RTImageFrameContextSequence          DcmTagKey(0x3002, 0x0103)
+#define DCM_RTImageScopeSequence                 DcmTagKey(0x3002, 0x0104)
+#define DCM_BeamModifierCoordinatesPresenceFlag  DcmTagKey(0x3002, 0x0105)
+#define DCM_StartCumulativeMeterset              DcmTagKey(0x3002, 0x0106)
+#define DCM_StopCumulativeMeterset               DcmTagKey(0x3002, 0x0107)
+#define DCM_RTAcquisitionPatientPositionSequence DcmTagKey(0x3002, 0x0108)
+#define DCM_RTImageFrameImagingDevicePositionSequence DcmTagKey(0x3002, 0x0109)
+#define DCM_RTImageFramekVRadiationAcquisitionSequence DcmTagKey(0x3002, 0x010a)
+#define DCM_RTImageFrameMVRadiationAcquisitionSequence DcmTagKey(0x3002, 0x010b)
+#define DCM_RTImageFrameRadiationAcquisitionSequence DcmTagKey(0x3002, 0x010c)
+#define DCM_ImagingSourcePositionSequence        DcmTagKey(0x3002, 0x010d)
+#define DCM_ImageReceptorPositionSequence        DcmTagKey(0x3002, 0x010e)
+#define DCM_DevicePositionToEquipmentMappingMatrix DcmTagKey(0x3002, 0x010f)
+#define DCM_DevicePositionParameterSequence      DcmTagKey(0x3002, 0x0110)
+#define DCM_ImagingSourceLocationSpecificationType DcmTagKey(0x3002, 0x0111)
+#define DCM_ImagingDeviceLocationMatrixSequence  DcmTagKey(0x3002, 0x0112)
+#define DCM_ImagingDeviceLocationParameterSequence DcmTagKey(0x3002, 0x0113)
+#define DCM_ImagingApertureSequence              DcmTagKey(0x3002, 0x0114)
+#define DCM_ImagingApertureSpecificationType     DcmTagKey(0x3002, 0x0115)
+#define DCM_NumberOfAcquisitionDevices           DcmTagKey(0x3002, 0x0116)
+#define DCM_AcquisitionDeviceSequence            DcmTagKey(0x3002, 0x0117)
+#define DCM_AcquisitionTaskSequence              DcmTagKey(0x3002, 0x0118)
+#define DCM_AcquisitionTaskWorkitemCodeSequence  DcmTagKey(0x3002, 0x0119)
+#define DCM_AcquisitionSubtaskSequence           DcmTagKey(0x3002, 0x011a)
+#define DCM_SubtaskWorkitemCodeSequence          DcmTagKey(0x3002, 0x011b)
+#define DCM_AcquisitionTaskIndex                 DcmTagKey(0x3002, 0x011c)
+#define DCM_AcquisitionSubtaskIndex              DcmTagKey(0x3002, 0x011d)
+#define DCM_ReferencedBaselineParametersRTRadiationInstanceSequence DcmTagKey(0x3002, 0x011e)
+#define DCM_PositionAcquisitionTemplateIdentificationSequence DcmTagKey(0x3002, 0x011f)
+#define DCM_PositionAcquisitionTemplateID        DcmTagKey(0x3002, 0x0120)
+#define DCM_PositionAcquisitionTemplateName      DcmTagKey(0x3002, 0x0121)
+#define DCM_PositionAcquisitionTemplateCodeSequence DcmTagKey(0x3002, 0x0122)
+#define DCM_PositionAcquisitionTemplateDescription DcmTagKey(0x3002, 0x0123)
+#define DCM_AcquisitionTaskApplicabilitySequence DcmTagKey(0x3002, 0x0124)
+#define DCM_ProjectionImagingAcquisitionParameterSequence DcmTagKey(0x3002, 0x0125)
+#define DCM_CTImagingAcquisitionParameterSequence DcmTagKey(0x3002, 0x0126)
+#define DCM_KVImagingGenerationParametersSequence DcmTagKey(0x3002, 0x0127)
+#define DCM_MVImagingGenerationParametersSequence DcmTagKey(0x3002, 0x0128)
+#define DCM_AcquisitionSignalType                DcmTagKey(0x3002, 0x0129)
+#define DCM_AcquisitionMethod                    DcmTagKey(0x3002, 0x012a)
+#define DCM_ScanStartPositionSequence            DcmTagKey(0x3002, 0x012b)
+#define DCM_ScanStopPositionSequence             DcmTagKey(0x3002, 0x012c)
+#define DCM_ImagingSourceToBeamModifierDefinitionPlaneDistance DcmTagKey(0x3002, 0x012d)
+#define DCM_ScanArcType                          DcmTagKey(0x3002, 0x012e)
+#define DCM_DetectorPositioningType              DcmTagKey(0x3002, 0x012f)
+#define DCM_AdditionalRTAccessoryDeviceSequence  DcmTagKey(0x3002, 0x0130)
+#define DCM_DeviceSpecificAcquisitionParameterSequence DcmTagKey(0x3002, 0x0131)
+#define DCM_ReferencedPositionReferenceInstanceSequence DcmTagKey(0x3002, 0x0132)
+#define DCM_EnergyDerivationCodeSequence         DcmTagKey(0x3002, 0x0133)
+#define DCM_MaximumCumulativeMetersetExposure    DcmTagKey(0x3002, 0x0134)
+#define DCM_AcquisitionInitiationSequence        DcmTagKey(0x3002, 0x0135)
 #define DCM_DVHType                              DcmTagKey(0x3004, 0x0001)
 #define DCM_DoseUnits                            DcmTagKey(0x3004, 0x0002)
 #define DCM_DoseType                             DcmTagKey(0x3004, 0x0004)
 #define DCM_DoseSummationType                    DcmTagKey(0x3004, 0x000a)
 #define DCM_GridFrameOffsetVector                DcmTagKey(0x3004, 0x000c)
 #define DCM_DoseGridScaling                      DcmTagKey(0x3004, 0x000e)
-#define DCM_RTDoseROISequence                    DcmTagKey(0x3004, 0x0010)
-#define DCM_DoseValue                            DcmTagKey(0x3004, 0x0012)
+#define DCM_RETIRED_RTDoseROISequence            DcmTagKey(0x3004, 0x0010)
+#define DCM_RETIRED_DoseValue                    DcmTagKey(0x3004, 0x0012)
 #define DCM_TissueHeterogeneityCorrection        DcmTagKey(0x3004, 0x0014)
 #define DCM_DVHNormalizationPoint                DcmTagKey(0x3004, 0x0040)
 #define DCM_DVHNormalizationDoseValue            DcmTagKey(0x3004, 0x0042)
 #define DCM_TreatmentControlPointDate            DcmTagKey(0x3008, 0x0024)
 #define DCM_TreatmentControlPointTime            DcmTagKey(0x3008, 0x0025)
 #define DCM_TreatmentTerminationStatus           DcmTagKey(0x3008, 0x002a)
-#define DCM_TreatmentTerminationCode             DcmTagKey(0x3008, 0x002b)
+#define DCM_RETIRED_TreatmentTerminationCode     DcmTagKey(0x3008, 0x002b)
 #define DCM_TreatmentVerificationStatus          DcmTagKey(0x3008, 0x002c)
 #define DCM_ReferencedTreatmentRecordSequence    DcmTagKey(0x3008, 0x0030)
 #define DCM_SpecifiedPrimaryMeterset             DcmTagKey(0x3008, 0x0032)
 #define DCM_ReferencedCalculatedDoseReferenceSequence DcmTagKey(0x3008, 0x0090)
 #define DCM_ReferencedCalculatedDoseReferenceNumber DcmTagKey(0x3008, 0x0092)
 #define DCM_BeamLimitingDeviceLeafPairsSequence  DcmTagKey(0x3008, 0x00a0)
+#define DCM_EnhancedRTBeamLimitingDeviceSequence DcmTagKey(0x3008, 0x00a1)
+#define DCM_EnhancedRTBeamLimitingOpeningSequence DcmTagKey(0x3008, 0x00a2)
+#define DCM_EnhancedRTBeamLimitingDeviceDefinitionFlag DcmTagKey(0x3008, 0x00a3)
+#define DCM_ParallelRTBeamDelimiterOpeningExtents DcmTagKey(0x3008, 0x00a4)
 #define DCM_RecordedWedgeSequence                DcmTagKey(0x3008, 0x00b0)
 #define DCM_RecordedCompensatorSequence          DcmTagKey(0x3008, 0x00c0)
 #define DCM_RecordedBlockSequence                DcmTagKey(0x3008, 0x00d0)
 #define DCM_WeekdayFractionPatternSequence       DcmTagKey(0x3010, 0x0087)
 #define DCM_DeliveryTimeStructureCodeSequence    DcmTagKey(0x3010, 0x0088)
 #define DCM_TreatmentSiteModifierCodeSequence    DcmTagKey(0x3010, 0x0089)
-#define DCM_RoboticBaseLocationIndicator         DcmTagKey(0x3010, 0x0090)
+#define DCM_RETIRED_RoboticBaseLocationIndicator DcmTagKey(0x3010, 0x0090)
 #define DCM_RoboticPathNodeSetCodeSequence       DcmTagKey(0x3010, 0x0091)
 #define DCM_RoboticNodeIdentifier                DcmTagKey(0x3010, 0x0092)
 #define DCM_RTTreatmentSourceCoordinates         DcmTagKey(0x3010, 0x0093)
index c337afd068cdb857bc08f7c05b9d808d28ace9a5..d7d164035e86b6ca212365b26c07e0db7c8e741c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -65,7 +65,7 @@ public:
      *  @param vmMax upper limit for value multiplicity, DcmVariableVM for unlimited
      *  @param vers standard version name, may be NULL
      *  @param doCopyStrings true if strings should be copied, false if only referenced
-     *  @param pcreator private creator name, may be NULL (for standard tags)
+     *  @param pcreator private creator identifier, may be NULL (for standard tags)
      */
     DcmDictEntry(Uint16 g, Uint16 e, DcmVR vr,
         const char* nam, int vmMin, int vmMax,
@@ -83,7 +83,7 @@ public:
      *  @param vmMax upper limit for value multiplicity, DcmVariableVM for unlimited
      *  @param vers standard version name, may be NULL
      *  @param doCopyStrings true if strings should be copied, false if only referenced
-     *  @param pcreator private creator name, may be NULL (for standard tags)
+     *  @param pcreator private creator identifier, may be NULL (for standard tags)
      */
     DcmDictEntry(Uint16 g, Uint16 e, Uint16 ug, Uint16 ue, DcmVR vr,
         const char* nam, int vmMin, int vmMax,
@@ -124,13 +124,13 @@ public:
         return tagName;
     }
 
-    /// returns private creator code, may be NULL
+    /// returns private creator identifier, may be NULL
     const char* getPrivateCreator() const
     {
         return privateCreator;
     }
 
-    /** checks if the private creator code equals the given string
+    /** checks if the private creator identifier equals the given string
      *  @param c string to compare with, may be NULL
      *  @return true if equal, false otherwise
      */
@@ -143,10 +143,10 @@ public:
       );
     }
 
-    /** checks if the private creator code of this object matches
-     *  the one of the given object.
+    /** checks if the private creator identifier of this object matches the one
+     *  of the given object.
      *  @param arg dictionary entry to compare with
-     *  @return true if private creators are equal, false otherwise
+     *  @return true if private creator identifiers are equal, false otherwise
      */
     int privateCreatorMatch(const DcmDictEntry& arg) const
     {
@@ -285,11 +285,12 @@ public:
 
     /* containment */
 
-    /** checks if the given tag key and private creator code are covered
+    /** checks if the given tag key and private creator identifier are covered
      *  by this object.
      *  @param key tag key
-     *  @param privCreator private creator, may be NULL
-     *  @return true if this entry contains the given tag for the given private creator
+     *  @param privCreator private creator identifier, may be NULL
+     *  @return true if this entry contains the given tag for the given private
+     *    creator identifier
      */
     int contains(const DcmTagKey& key, const char *privCreator) const /* this contains key */
     {
@@ -400,7 +401,7 @@ private:
     /// restriction (even, odd, unrestricted) for element range
     DcmDictRangeRestriction elementRangeRestriction;
 
-    /// private creator name, may be NULL
+    /// private creator identifier, may be NULL
     const char *privateCreator;
 };
 
index f1e9ba7ffbaa1fe603c7771ebe546f56dd1daccc..6c1110d883634ffedbfcbaf585ec1bb0a2bf0b88 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -113,25 +113,25 @@ public:
 
     /** load a particular dictionary from file.
      *  @param fileName filename
-     *  @param errorIfAbsent causes the method to return false
-     *     if the file cannot be opened
+     *  @param errorIfAbsent causes the method to return false if the file
+     *     cannot be opened
      *  @return false if the file contains a parse error or if the file could
      *     not be opened and errorIfAbsent was set, true otherwise.
      */
     OFBool loadDictionary(const char* fileName, OFBool errorIfAbsent = OFTrue);
 
-    /** dictionary lookup for the given tag key and private creator name.
-     *  First the normal tag dictionary is searched.  If not found
-     *  then the repeating tag dictionary is searched.
+    /** dictionary lookup for the given tag key and private creator identifier.
+     *  First the normal tag dictionary is searched.  If not found then the
+     *  repeating tag dictionary is searched.
      *  @param key tag key
-     *  @param privCreator private creator name, may be NULL
+     *  @param privCreator private creator identifier, may be NULL
      */
     const DcmDictEntry* findEntry(const DcmTagKey& key, const char *privCreator) const;
 
     /** dictionary lookup for the given attribute name.
-     *  First the normal tag dictionary is searched.  If not found
-     *  then the repeating tag dictionary is searched.
-     *  Only considers standard attributes (i. e. without private creator)
+     *  First the normal tag dictionary is searched.  If not found then the
+     *  repeating tag dictionary is searched.
+     *  Only considers standard attributes (i. e. without private creator).
      *  @param name attribute name
      */
     const DcmDictEntry* findEntry(const char *name) const;
index 3ffb057e141823158ae7c1e7de61eb0a301bf111..7fb0022b865cf009823c264482cac4d85bdb1da7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -130,7 +130,9 @@ typedef enum {
     /// radiotherapy
     ERT_Radiotherapy = 48,
     /// annotation
-    ERT_Annotation = 49
+    ERT_Annotation = 49,
+    /// inventory
+    ERT_Inventory = 50
 } E_DirRecType;
 
 
index bb9b90c497f0232e547365f028430067e32ef95c..b6ffeb7eb08d2d929bf1bd6d5d50fdf143fb4c74 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,6 +27,7 @@
 
 #include "dcmtk/dcmdata/dcobject.h"
 #include "dcmtk/ofstd/ofstring.h"
+#include "dcmtk/ofstd/oftypes.h"
 
 // forward declarations
 class DcmInputStreamFactory;
@@ -717,10 +718,15 @@ class DCMTK_DCMDATA_EXPORT DcmElement
      *  @param dataset dataset in which this pixel data element is contained
      *  @param frameSize frame size in bytes (without padding) returned in this
      *    parameter upon success, otherwise set to 0
+     *  @param pixelDataIsUncompressed flag indicating whether the frame
+     *    to be accessed already exists in uncompressed form. This is important
+     *    for the YBR_FULL_422 color model, which is never created by DCMTK's
+     *    decoders but can exist in uncompressed format
      *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition getUncompressedFrameSize(DcmItem *dataset,
-                                                 Uint32 &frameSize) const;
+                                                 Uint32 &frameSize,
+                                                 OFBool pixelDataIsUncompressed) const;
 
     /** access single frame without decompressing or loading a complete
      *  multi-frame object. The frame is copied into the buffer passed by the caller
@@ -877,9 +883,9 @@ class DCMTK_DCMDATA_EXPORT DcmElement
      *  @param vmNum value multiplicity of the value to be checked.
      *    For empty values (vmNum=0), the status of the check is always EC_Normal (i.e. no error).
      *  @param vmStr value multiplicity (according to the data dictionary) to be checked for.
-     *    (valid values: "1", "1-2", "1-3", "1-8", "1-99", "1-n", "2", "2-n", "2-2n",
-     *                   "3", "3-n", "3-3n", "4", "5", "5-n", "6", "7", "7-7n", "8", "9",
-     *                   "16", "24", "32", "256")
+     *    (valid values: "1", "1-2", "1-3", "1-8", "1-99", "1-n", "2", "2-4", "2-n", "2-2n",
+     *                   "3", "3-n", "3-3n", "4", "4-5", "4-4n", "5", "5-n", "6", "6-n",
+     *                   "7", "7-7n", "8", "9", "11", "16", "24", "32", "256")
      *  @return status of the check, EC_ValueMultiplicityViolated in case of error
      */
     static OFCondition checkVM(const unsigned long vmNum,
index 960d1e751192eba2c2e587899a44371981039adc..6a77836e5df48f734f73417a1c00c3d69e3b2fba 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2017, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -92,7 +92,7 @@ public:
 
     /** find an entry in the set
      *  @param key tag key of the entry to be searched for
-     *  @param privCreator private creator name, may be NULL
+     *  @param privCreator private creator identifier, may be NULL
      *  @return pointer to entry (if found), otherwise NULL
      */
     DcmDictEntry *find(const DcmTagKey& key, const char *privCreator);
@@ -224,14 +224,14 @@ public:
 
     /** hash table lookup for the given tag key and private creator name
      *  @param key tag key of the entry to be searched for
-     *  @param privCreator private creator name, may be NULL
+     *  @param privCreator private creator identifier, may be NULL
      *  @return pointer to entry (if found), otherwise NULL
      */
     const DcmDictEntry* get(const DcmTagKey& key, const char *privCreator) const;
 
-    /** deletes the entry for the given tag and private creator
+    /** deletes the entry for the given tag and private creator identifier
      *  @param key tag key of the entry to be deleted
-     *  @param privCreator private creator name, may be NULL
+     *  @param privCreator private creator identifier, may be NULL
      */
     void del(const DcmTagKey& key, const char *privCreator);
 
@@ -264,7 +264,7 @@ private:
 
     /** compute hash value for given tag key
      *  @param key pointer to tag key
-     *  @param privCreator private creator name, may be NULL
+     *  @param privCreator private creator identifier, may be NULL
      *  @return hash value
      */
     int hash(const DcmTagKey* key, const char *privCreator) const;
@@ -276,18 +276,18 @@ private:
      */
     DcmDictEntry* insertInList(DcmDictEntryList& lst, DcmDictEntry* entry);
 
-    /** removes the entry for the given tag and private creator
+    /** removes the entry for the given tag and private creator identifier
      *  @param lst list to remove from
      *  @param key tag key of the entry to be removed
-     *  @param privCreator private creator name, may be NULL
+     *  @param privCreator private creator identifier, may be NULL
      *  @return pointer to removed element, if any
      */
     DcmDictEntry* removeInList(DcmDictEntryList& lst, const DcmTagKey& key, const char *privCreator);
 
-    /** searches entry for the given tag and private creator
+    /** searches entry for the given tag and private creator identifier
      *  @param lst list to search in
      *  @param key tag key of the entry to be searched for
-     *  @param privCreator private creator name, may be NULL
+     *  @param privCreator private creator identifier, may be NULL
      *  @return pointer to found element, NULL if not found
      */
     DcmDictEntry* findInList(DcmDictEntryList& lst, const DcmTagKey& key, const char *privCreator) const;
index fff90d86b5b1396bff6896fc42a7af027b7227ae..e79d558084166dee5eebc20a09788db5d878c22b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -95,9 +95,9 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *          cannot be casted to this object type or both objects are of
      *          different VR (i.e. the DcmEVR returned by the element's ident()
      *          call are different).
-     *          1 if either this element has more components than the rhs element, or
-     *          if the first component that does not match is greater in this object than
-     *          in rhs object.
+     *          1 if either this element has more components than the rhs
+     *          element, or if the first component that does not match is
+     *          greater in this object than in rhs object.
      */
     virtual int compare(const DcmItem& rhs) const;
 
@@ -448,8 +448,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  that is, DcmItem and DcmSequenceOfItems. It returns a pointer to the
      *  next object in the list AFTER the given object. If the caller passes NULL,
      *  a pointer to the first object in the list is returned. If the given object
-     *  is not found, the given object is the last one in the list or the list is empty,
-     *  NULL is returned.
+     *  is not found, the given object is the last one in the list or the list is
+     *  empty, NULL is returned.
      *  @param obj pointer to one object in the container; we are looking for the
      *    next entry after this one. NULL if looking for the first entry.
      *  @return pointer to next object in container or NULL if not found
@@ -1206,6 +1206,19 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                    const unsigned long pos = 0,
                                    const OFBool replaceOld = OFTrue);
 
+    /** create a new element, put specified value to it and insert the element into the dataset/item.
+     *  Applicable to the following VRs: SL.
+     *  @param tag DICOM tag specifying the attribute to be created
+     *  @param value value to be set for the new element
+     *  @param count number of values (not bytes!) to be copied from 'value'
+     *  @param replaceOld flag indicating whether to replace an existing element or not
+     *  @return EC_Normal upon success, an error code otherwise.
+     */
+    OFCondition putAndInsertSint32Array(const DcmTag &tag,
+                                        const Sint32 *value,
+                                        const unsigned long count,
+                                        const OFBool replaceOld = OFTrue);
+
     /** create a new element, put specified value to it and insert the element into the dataset/item.
      *  Applicable to the following VRs: FL, OF.
      *  @param tag DICOM tag specifying the attribute to be created
@@ -1308,8 +1321,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  in the dictionary) will result in a DcmElement instance of derived type
      *  DcmOtherByteOtherWord.
      *  @param tag attribute tag of the element to be created
-     *  @param privateCreator private creator of the element, if element tag
-     *    is private (default: NULL, i.e. non-private DICOM standard tag)
+     *  @param privateCreator private creator identifier of the element, if element
+     *    tag is private (default: NULL, i.e. non-private DICOM standard tag)
      *  @return pointer to newly created element upon success, NULL pointer otherwise
      *
      */
@@ -1323,8 +1336,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  @param newElement pointer to newly created element returned in this parameter
      *    upon success, NULL pointer otherwise
      *  @param tag attribute tag of the element to be created
-     *  @param privateCreator private creator of the element, if element tag
-     *    is private (default: NULL, i.e. non-private DICOM standard tag)
+     *  @param privateCreator private creator identifier of the element, if element
+     *    tag is private (default: NULL, i.e. non-private DICOM standard tag)
      *  @return EC_Normal upon success, an error code otherwise
      */
     static OFCondition newDicomElement(DcmElement *&newElement,
@@ -1451,8 +1464,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  @param tag attribute tag of the element to be created. VR of tag may be
      *    updated within the method.
      *  @param length attribute value length of the element to be created
-     *  @param privateCreatorCache cache object for private creator strings in
-     *    the current dataset
+     *  @param privateCreatorCache cache object for private creator elements
+     *    in the current dataset
      *  @param readAsUN flag indicating whether parser is currently handling
      *    UN element that must be read in implicit VR little endian; updated
      *    upon return
@@ -1487,7 +1500,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      */
     static OFBool foundVR(const Uint8* atposition);
 
-    /// cache for private creator tags and names
+    /// cache for private creator tags and identifiers
     DcmPrivateTagCache privateCreatorCache;
 };
 
index ce7451464b9eb063afa6f51bccf60693355209a8..fe60c6b66cb41bce1ebe764f9b2f254db1533299 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -26,6 +26,8 @@
 #include "dcmtk/config/osconfig.h"
 #include "dcmtk/dcmdata/dcostrma.h"
 
+class OFFile;
+
 /** consumer class that stores data in a plain file.
  */
 class DCMTK_DCMDATA_EXPORT DcmFileConsumer: public DcmConsumer
@@ -42,6 +44,13 @@ public:
    */
   DcmFileConsumer(FILE *file);
 
+  /** constructor
+   *  @param OFFile instance, file must already be open for writing,
+   *   and the OFFile object must remain valid as long as this instance
+   *   exists.
+   */
+  DcmFileConsumer(OFFile& file);
+
   /// destructor
   virtual ~DcmFileConsumer();
 
@@ -95,8 +104,12 @@ private:
   /// private unimplemented copy assignment operator
   DcmFileConsumer& operator=(const DcmFileConsumer&);
 
-  /// the file we're actually writing to
-  OFFile file_;
+  /// container encapsulating a FILE *
+  OFFile file_container_;
+
+  /// reference the file we actually writing to.
+  /// Points to file_container_ in most, but not all cases
+  OFFile& file_;
 
   /// status
   OFCondition status_;
@@ -119,6 +132,13 @@ public:
    */
   DcmOutputFileStream(FILE *file);
 
+  /** constructor
+   *  @param OFFile instance, file must already be open for writing,
+   *   and the OFFile object must remain valid as long as this instance
+   *   exists.
+   */
+  DcmOutputFileStream(OFFile& file);
+
   /// destructor
   virtual ~DcmOutputFileStream();
 
index 84a788c2ba78094b8f157e89395c7d8eca6ec919..31a6357afaffbdb0b5b37aa8865b9d8e67983229 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2022, OFFIS e.V.
+ *  Copyright (C) 2008-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -245,10 +245,10 @@ public:
      */
     void checkPrivateReservations(const OFBool doChecking);
 
-    /** Returns private creator string for given tag
+    /** Returns private creator identifier for given tag
      *  @param item   [in] The item to search in
      *  @param tagKey [in] The tag key for which a reservation should be looked up
-     *  @param privateCreator [out] The private creator string
+     *  @param privateCreator [out] The private creator identifier
      *  @return Return EC_Normal if reservation was found (can be empty, though),
      *          EC_TagNotFound if no private creator tag exists, error otherwise
      */
@@ -258,8 +258,8 @@ public:
      *  tag key exists.
      *  @param item   [in] The item to search in
      *  @param tagKey [in/out] The tag to be checked.
-     *  @param privateCreator [in] The private creator to check for (if known,
-     *                        can be left empty)
+     *  @param privateCreator [in] The private creator identifier to check for
+     *                        (if known, can be left empty)
      *  @return Return EC_Normal if reservation checking was successful.
      *          Otherwise an error code is returned.
      */
@@ -272,8 +272,8 @@ public:
      *  @param item [in] The item to search in
      *  @param tag [in/out] The tag to be checked. Will be updated with VR and
      *                      private creator.
-     *  @param privateCreator [in] The private creator to check for (if known,
-     *                        can be left empty)
+     *  @param privateCreator [in] The private creator identifier to check for
+     *                        (if known, can be left empty)
      *  @return Return EC_Normal if reservation checking and updating the
      *          tag was successful. Otherwise an error code is returned.
      */
index eeb2b3e93c51612f2256087750f4393d5880a178..e9f4e7f4009fee8f77a16a4d027638b83d756434 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #define DCPCACHE_H
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
-#include "dcmtk/ofstd/oftypes.h"     /* for OFBool */
-#include "dcmtk/ofstd/oflist.h"      /* for OFList */
-#include "dcmtk/ofstd/ofstring.h"    /* for OFString */
-#include "dcmtk/dcmdata/dctagkey.h"    /* for DcmTagKey */
+#include "dcmtk/ofstd/oftypes.h"      /* for OFBool */
+#include "dcmtk/ofstd/oflist.h"       /* for OFList */
+#include "dcmtk/ofstd/ofstring.h"     /* for OFString */
+#include "dcmtk/dcmdata/dctagkey.h"   /* for DcmTagKey */
 
 class DcmObject;
 
@@ -37,14 +37,14 @@ class DCMTK_DCMDATA_EXPORT DcmPrivateTagCacheEntry
 public:
   /** constructor
    *  @param tk tag key for private creator element
-   *  @param pc private creator name, must not be NULL or empty string
+   *  @param pc private creator identifier, must not be NULL or empty string
    */
   DcmPrivateTagCacheEntry(const DcmTagKey& tk, const char *pc);
 
   /// destructor
   virtual ~DcmPrivateTagCacheEntry();
 
-  /** returns the private creator name
+  /** returns the private creator identifier
    */
   const char *getPrivateCreator() const;
 
@@ -60,14 +60,14 @@ private:
 
   /// private undefined copy constructor
   DcmPrivateTagCacheEntry(const DcmPrivateTagCacheEntry&);
-  
+
   /// private undefined copy assignment operator
   DcmPrivateTagCacheEntry& operator=(const DcmPrivateTagCacheEntry&);
 
   /// the tag key of the private creator element
   DcmTagKey tagKey;
 
-  /// the private creator name
+  /// the private creator identifier
   OFString privateCreator;
 };
 
@@ -87,15 +87,15 @@ public:
   /// resets the cache to default-constructed state
   void clear();
 
-  /** looks up the private creator name for the given private tag
+  /** looks up the private creator identifier for the given private tag
    *  @param tk private tag to check
-   *  @return private creator name if found, NULL otherwise.
+   *  @return private creator identifier if found, NULL otherwise.
    */
   const char *findPrivateCreator(const DcmTagKey& tk) const;
 
   /** updates the private creator cache with the given object.
-   *  If the object points to a private creator element,
-   *  the tag key and creator code are added to the cache.
+   *  If the object points to a private creator element, the
+   *  tag key and creator identifier are added to the cache.
    *  Otherwise, the cache remains unmodified.
    *  @param dobj the given object
    */
@@ -105,7 +105,7 @@ private:
 
   /// private undefined copy constructor
   DcmPrivateTagCache(const DcmPrivateTagCache&);
-  
+
   /// private undefined copy assignment operator
   DcmPrivateTagCache& operator=(const DcmPrivateTagCache&);
 
index ba1368ee926fd807afae917fd91572c010c76e35..e279a61efa3b1d852cdb9a0ae58794a7759b0f8a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -45,7 +45,7 @@
 
 
 /** this class encapsulates an attribute tag (group, element) and a VR.
- *  It maintains a private creator name for private tags and caches
+ *  It maintains a private creator identifier for private tags and caches
  *  the attribute name, once it is looked up in the data dictionary.
  *  This class maintains the interface to the DICOM data dictionary,
  *  i.e. performs look-ups of attribute VR and name in the background.
@@ -60,21 +60,21 @@ public:
     DcmTag();
 
     /** constructor.
-     *  Initializes group/element from given tag key and performs
-     *  a dictionary lookup for the VR.  The lookup also considers
-     *  private tags if the private creator is defined (not NULL).
+     *  Initializes group/element from given tag key and performs a dictionary
+     *  lookup for the VR.  The lookup also considers private tags if the
+     *  private creator identifier is defined (not NULL).
      *  @param akey tag key
-     *  @param privCreator private creator code (optional)
+     *  @param privCreator private creator identifier (optional)
      */
     DcmTag(const DcmTagKey& akey, const char *privCreator = NULL);
 
     /** constructor.
-     *  Initializes group/element from given parameters and performs
-     *  a dictionary lookup for the VR.  The lookup also considers
-     *  private tags if the private creator is defined (not NULL).
+     *  Initializes group/element from given parameters and performs a
+     *  dictionary lookup for the VR.  The lookup also considers private tags
+     *  if the private creator identifier is defined (not NULL).
      *  @param g tag group
      *  @param e tag element
-     *  @param privCreator private creator code (optional)
+     *  @param privCreator private creator identifier (optional)
      */
     DcmTag(Uint16 g, Uint16 e, const char *privCreator = NULL);
 
@@ -95,15 +95,42 @@ public:
      */
     DcmTag(Uint16 g, Uint16 e, const DcmVR& avr);
 
-    /// copy constructor
+    /** copy constructor
+     *  @param tag tag to be copied
+     */
     DcmTag(const DcmTag& tag);
 
+    /** constructor.
+     *  Initializes tag from given parameter, but uses the specified VR.
+     *  This constructor is e.g. useful for attributes with multiple VRs.
+     *  No dictionary lookup needed/performed.
+     *  @param tag tag to be copied
+     *  @param avr VR to be used
+     */
+    DcmTag(const DcmTag& tag, const DcmVR& avr);
+
     /// destructor
     ~DcmTag();
 
     /// copy assignment operator
     DcmTag& operator=(const DcmTag& tag);
 
+    /** comparison operator. Returns true if both group and element number
+     *  as well as private creator identifier (if present) are the same.
+     *  Please note that the VR is not used for comparison.
+     *  @param tag tag to compare with
+     *  @return true if tags are the same
+     */
+    OFBool operator==(const DcmTag& tag) const;
+
+    /** negation operator. Returns true if either group or element number
+     *  or private creator identifier (if present) are not the same.
+     *  Please note that the VR is not used for comparison.
+     *  @param tag tag to compare with
+     *  @return true if tags are not the same
+     */
+    OFBool operator!=(const DcmTag& tag) const;
+
     /// set specific VR
     DcmVR setVR(const DcmVR& avr);
 
@@ -111,22 +138,35 @@ public:
     DcmVR getVR() const { return vr; }
 
     /// returns VR code
-    DcmEVR getEVR() const { return vr.getEVR(); }
+    DcmEVR getEVR() const
+    {
+      return vr.getEVR();
+    }
 
     /// returns name of VR
-    const char* getVRName() const { return vr.getVRName(); }
+    const char* getVRName() const
+    {
+      return vr.getVRName();
+    }
 
     /** returns tag group
      *  @return tag group
      */
-    Uint16 getGTag() const { return getGroup(); }
+    Uint16 getGTag() const
+    {
+      return getGroup();
+    }
 
     /** returns tag element
      *  @return tag element
      */
-    Uint16 getETag() const { return getElement(); }
+    Uint16 getETag() const
+    {
+      return getElement();
+    }
 
-    /** returns a copy of the tag key by value
+    /** returns a copy of the tag key by value.
+     *  @note In most cases, the method getTagKey() should be preferred.
      *  @return copy of tag key, by value
      */
     DcmTagKey getXTag() const
@@ -134,37 +174,45 @@ public:
       return * OFstatic_cast(const DcmTagKey *, this);
     }
 
+    /** returns tag key as a const reference
+     *  @return tag key
+     */
+    const DcmTagKey &getTagKey() const
+    {
+      return *this;
+    }
+
     /** returns name of attribute tag.
-     *  If name has not been accessed before, a dictionary lookup
-     *  under consideration of the current private creator code
-     *  is performed.  If no attribute name is found, a default
-     *  name is used.  Never returns NULL.
+     *  If name has not been accessed before, a dictionary lookup under
+     *  consideration of the current private creator identifier is performed.
+     *  If no attribute name is found, a default name is used.  Never returns
+     *  NULL.
      *  @return attribute tag name, never NULL.
      */
     const char* getTagName();
 
-    /** returns the current private creator string for this object
-     *  if any, NULL otherwise.
-     *  @return creator code if present, NULL otherwise
+    /** returns the current private creator identifier for this object if any,
+     *  NULL otherwise.
+     *  @return private creator identifier if present, NULL otherwise
      */
     const char* getPrivateCreator() const;
 
-    /** assigns a private creator code and deletes a possibly
-     *  cached attribute name since the attribute name could
-     *  change if a different private creator code is used.
-     *  @param privCreator private creator code, may be NULL
+    /** assigns a private creator identifier and deletes a possibly cached
+     *  attribute name since the attribute name could change if a different
+     *  private creator identifier is used.
+     *  @param privCreator private creator identifier, may be NULL
      */
     void setPrivateCreator(const char *privCreator);
 
     /** performs a look-up of the VR for the current tag key in the dictionary,
-     *  under consideration of the private creator (if defined).
+     *  under consideration of the private creator identifier (if defined).
      *  If a dictionary entry is found, the VR of this object is copied
      *  from the dictionary entry, otherwise the VR remains unmodified.
      */
     void lookupVRinDictionary();
 
-    /** returns true if a data element with the given tag and VR
-     *  can be digitally signed, false otherwise
+    /** returns true if a data element with the given tag and VR can be
+     *  digitally signed, false otherwise
      *  @return true if signable, false otherwise
      */
     OFBool isSignable() const;
@@ -174,7 +222,10 @@ public:
     OFBool isUnknownVR() const;
 
     /// returns current status flag
-    OFCondition error() const { return errorFlag; }
+    OFCondition error() const
+    {
+      return errorFlag;
+    }
 
     // --- static helper functions ---
 
@@ -191,6 +242,12 @@ public:
      */
     static OFCondition findTagFromName(const char *name,
                                        DcmTag &value);
+
+    // --- re-introduce methods from base class
+
+    using DcmTagKey::operator==;
+    using DcmTagKey::operator!=;
+
 private:
 
     /** replace tagName with copy of given string
@@ -199,7 +256,7 @@ private:
     void updateTagName(const char *c);
 
     /** replace privateCreator with copy of given string
-     *  @param c new private creator
+     *  @param c new private creator identifier
      */
     void updatePrivateCreator(const char *c);
 
@@ -209,7 +266,8 @@ private:
     /// name of this attribute tag, remains NULL unless getTagName() is called
     char *tagName;
 
-    /// private creator code, remains NULL unless setPrivateCreator() is called
+    /// private creator identifier, remains NULL unless setPrivateCreator() is
+    /// called
     char *privateCreator;
 
     /// current error code, EC_Normal if a valid VR for the tag is known
index 5897f14a7968cbfc1ec7cef1704726e7e51c1b16..f7e0fefbda04e4ed8d21a47da1a5beb6f945e4f6 100644 (file)
@@ -135,7 +135,7 @@ public:
      */
     inline DcmTagKey& operator = (const DcmTagKey& key);
 
-    /** Comparison operator. Returns true if both group and element number
+    /** comparison operator. Returns true if both group and element number
      *  are the same.
      *  @param key key to compare with
      *  @return true if tag keys are the same
index d8f63bd35f1dc0be1961cc33ab6fa4d2877a1723..5c2f4cbe420f0353ea8d1e6b02f817722ca45569 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -67,9 +67,10 @@ DCMTK_DCMDATA_EXPORT const char* dcmFindUIDFromName(const char* name);
 /** return the keyword of a UID.
  *  Performs a table lookup and returns a pointer to a read-only string.
  *  @param uid UID string for which the keyword is to be looked up
- *  @return keyword string or NULL if UID is unknown
+ *  @param defaultValue default to return if UID not known
+ *  @return keyword string or defaultValue if UID is unknown
  */
-DCMTK_DCMDATA_EXPORT const char* dcmFindKeywordOfUID(const char* uid);
+DCMTK_DCMDATA_EXPORT const char* dcmFindKeywordOfUID(const char* uid, const char* defaultValue = NULL);
 
 /** return the UID of a keyword.
  *  Performs a table lookup and returns a pointer to a read-only string.
@@ -264,21 +265,35 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #endif
 
 /*
-** Useful UID prefixes. These can be whatever you want.
+** Useful UID prefixes.
 **
 ** These site UIDs are arbitrary, non-standard, with no meaning
 ** and can be changed at any time.  Do _not_ rely on these values.
-** Do _not_ assume any semantics when using these suffixes.
+** Do _not_ assume any semantics when using these prefixes.
+**
+** The DCMTK currently uses the following site-specific UID prefixes:
+** - SITE_UID_ROOT + ".1"
 **
+** In addition, the DCMTK uses the following UID prefixes based on the
+** organization root that is registered for OFFIS, which is identical
+*  to SITE_UID_ROOT if not redefined:
+** - OFFIS_UID_ROOT + ".0"
+** - OFFIS_UID_ROOT + ".4"
+**
+** Note: For application-specific purposes that require specific
+**       semantics, the UID prefix SITE_UID_ROOT + ".9" may be used
+**       in user code.  DCMTK does not and will not use this UID prefix
+**       internally.  Of course, this UID prefix should preferably be
+**       used with a site-specific SITE_UID_ROOT (see above).
 */
 
-/// UID root for study instance UIDs
+/// UID root for Study Instance UIDs
 #define SITE_STUDY_UID_ROOT                     SITE_UID_ROOT ".1.2"
 
-/// UID root for series instance UIDs
+/// UID root for Series Instance UIDs
 #define SITE_SERIES_UID_ROOT                    SITE_UID_ROOT ".1.3"
 
-/// UID root for SOP instance UIDs
+/// UID root for SOP Instance UIDs
 #define SITE_INSTANCE_UID_ROOT                  SITE_UID_ROOT ".1.4"
 
 /** A private SOP Class UID which is used in a file meta-header when no
@@ -361,18 +376,32 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_JPIPReferencedDeflateTransferSyntax "1.2.840.10008.1.2.4.95"
 /// MPEG2 Main Profile @ Main Level (changed with DICOM 2016e to: MPEG2 Main Profile / Main Level)
 #define UID_MPEG2MainProfileAtMainLevelTransferSyntax "1.2.840.10008.1.2.4.100"
+/// Fragmentable MPEG2 Main Profile / Main Level
+#define UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax "1.2.840.10008.1.2.4.100.1"
 /// MPEG2 Main Profile @ High Level (changed with DICOM 2016e to: MPEG2 Main Profile / High Level)
 #define UID_MPEG2MainProfileAtHighLevelTransferSyntax "1.2.840.10008.1.2.4.101"
+/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1
+#define UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax "1.2.840.10008.1.2.4.101.1"
 /// MPEG-4 AVC/H.264 High Profile / Level 4.1
 #define UID_MPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102"
+/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1
+#define UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.102.1"
 /// MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1
 #define UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103"
+/// Fragmentable MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1
+#define UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax "1.2.840.10008.1.2.4.103.1"
 /// MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video
 #define UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104"
+/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video
+#define UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax "1.2.840.10008.1.2.4.104.1"
 /// MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video
 #define UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105"
+/// Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video
+#define UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax "1.2.840.10008.1.2.4.105.1"
 /// MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2
 #define UID_MPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106"
+/// Fragmentable MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2
+#define UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax "1.2.840.10008.1.2.4.106.1"
 /// HEVC/H.265 Main Profile / Level 5.1
 #define UID_HEVCMainProfileLevel5_1TransferSyntax "1.2.840.10008.1.2.4.107"
 /// HEVC/H.265 Main 10 Profile / Level 5.1
@@ -391,13 +420,13 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
  *  on a DICOM storage medium. It was never used for network communication
  *  or encoding of DICOM objects.
  */
-#define UID_RFC2557MIMEEncapsulationTransferSyntax "1.2.840.10008.1.2.6.1"
+#define UID_RETIRED_RFC2557MIMEEncapsulationTransferSyntax "1.2.840.10008.1.2.6.1"
 
 /** XML Encoding (RETIRED) was only a pseudo transfer syntax used to refer to
  *  encapsulated HL7 CDA documents from a DICOMDIR when stored on a DICOM storage
  *  medium. It was never used for network communication or encoding of DICOM objects.
  */
-#define UID_XMLEncodingTransferSyntax "1.2.840.10008.1.2.6.2"
+#define UID_RETIRED_XMLEncodingTransferSyntax "1.2.840.10008.1.2.6.2"
 
 /** Private transfer syntax defined by GE. This transfer syntax is identical to
  *  Implicit VR Little Endian, except that Pixel Data are encoded in big endian.
@@ -433,6 +462,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RETIRED_UltrasoundImageStorage                         "1.2.840.10008.5.1.4.1.1.6"
 #define UID_UltrasoundImageStorage                                 "1.2.840.10008.5.1.4.1.1.6.1"
 #define UID_EnhancedUSVolumeStorage                                "1.2.840.10008.5.1.4.1.1.6.2"
+#define UID_PhotoacousticImageStorage                              "1.2.840.10008.5.1.4.1.1.6.3"
 #define UID_SecondaryCaptureImageStorage                           "1.2.840.10008.5.1.4.1.1.7"
 #define UID_MultiframeSingleBitSecondaryCaptureImageStorage        "1.2.840.10008.5.1.4.1.1.7.1"
 #define UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage    "1.2.840.10008.5.1.4.1.1.7.2"
@@ -443,6 +473,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_TwelveLeadECGWaveformStorage                           "1.2.840.10008.5.1.4.1.1.9.1.1"
 #define UID_GeneralECGWaveformStorage                              "1.2.840.10008.5.1.4.1.1.9.1.2"
 #define UID_AmbulatoryECGWaveformStorage                           "1.2.840.10008.5.1.4.1.1.9.1.3"
+#define UID_General32BitECGWaveformStorage                         "1.2.840.10008.5.1.4.1.1.9.1.4"
 #define UID_HemodynamicWaveformStorage                             "1.2.840.10008.5.1.4.1.1.9.2.1"
 #define UID_CardiacElectrophysiologyWaveformStorage                "1.2.840.10008.5.1.4.1.1.9.3.1"
 #define UID_BasicVoiceAudioWaveformStorage                         "1.2.840.10008.5.1.4.1.1.9.4.1"
@@ -468,6 +499,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_VolumeRenderingVolumetricPresentationStateStorage      "1.2.840.10008.5.1.4.1.1.11.9"
 #define UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage "1.2.840.10008.5.1.4.1.1.11.10"
 #define UID_MultipleVolumeRenderingVolumetricPresentationStateStorage "1.2.840.10008.5.1.4.1.1.11.11"
+#define UID_VariableModalityLUTSoftcopyPresentationStateStorage    "1.2.840.10008.5.1.4.1.1.11.12"
 #define UID_XRayAngiographicImageStorage                           "1.2.840.10008.5.1.4.1.1.12.1"
 #define UID_EnhancedXAImageStorage                                 "1.2.840.10008.5.1.4.1.1.12.1.1"
 #define UID_XRayRadiofluoroscopicImageStorage                      "1.2.840.10008.5.1.4.1.1.12.2"
@@ -581,12 +613,11 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RoboticRadiationRecordStorage                          "1.2.840.10008.5.1.4.1.1.481.20"
 #define UID_RTRadiationSetDeliveryInstructionStorage               "1.2.840.10008.5.1.4.1.1.481.21"
 #define UID_RTTreatmentPreparationStorage                          "1.2.840.10008.5.1.4.1.1.481.22"
+#define UID_EnhancedRTImageStorage                                 "1.2.840.10008.5.1.4.1.1.481.23"
+#define UID_EnhancedContinuousRTImageStorage                       "1.2.840.10008.5.1.4.1.1.481.24"
+#define UID_RTPatientPositionAcquisitionInstructionStorage         "1.2.840.10008.5.1.4.1.1.481.25"
 #define UID_RTBeamsDeliveryInstructionStorage                      "1.2.840.10008.5.1.4.34.7"
 #define UID_RTBrachyApplicationSetupDeliveryInstructionStorage     "1.2.840.10008.5.1.4.34.10"
-#define UID_HangingProtocolStorage                                 "1.2.840.10008.5.1.4.38.1"
-#define UID_GenericImplantTemplateStorage                          "1.2.840.10008.5.1.4.43.1"
-#define UID_ImplantAssemblyTemplateStorage                         "1.2.840.10008.5.1.4.44.1"
-#define UID_ImplantTemplateGroupStorage                            "1.2.840.10008.5.1.4.45.1"
 
 // DICOMDIR (was UID_BasicDirectoryStorageSOPClass in DCMTK versions prior to 3.5.3)
 #define UID_MediaStorageDirectoryStorage                           "1.2.840.10008.1.3.10"
@@ -652,7 +683,8 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RETIRED_StorageCommitmentPullModelSOPClass             "1.2.840.10008.1.20.2"
 #define UID_RETIRED_StorageCommitmentPullModelSOPInstance          "1.2.840.10008.1.20.2.1"
 
-// Hanging Protocols
+// Hanging Protocol Storage and Query/Retrieve
+#define UID_HangingProtocolStorage                                 "1.2.840.10008.5.1.4.38.1"
 #define UID_FINDHangingProtocolInformationModel                    "1.2.840.10008.5.1.4.38.2"
 #define UID_MOVEHangingProtocolInformationModel                    "1.2.840.10008.5.1.4.38.3"
 #define UID_GETHangingProtocolInformationModel                     "1.2.840.10008.5.1.4.38.4"
@@ -669,13 +701,18 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_MOVEColorPaletteInformationModel                       "1.2.840.10008.5.1.4.39.3"
 #define UID_GETColorPaletteInformationModel                        "1.2.840.10008.5.1.4.39.4"
 
-// Implant Template Query/Retrieve
+// Implant Template Storage and Query/Retrieve
+#define UID_GenericImplantTemplateStorage                          "1.2.840.10008.5.1.4.43.1"
 #define UID_FINDGenericImplantTemplateInformationModel             "1.2.840.10008.5.1.4.43.2"
 #define UID_MOVEGenericImplantTemplateInformationModel             "1.2.840.10008.5.1.4.43.3"
 #define UID_GETGenericImplantTemplateInformationModel              "1.2.840.10008.5.1.4.43.4"
+
+#define UID_ImplantAssemblyTemplateStorage                         "1.2.840.10008.5.1.4.44.1"
 #define UID_FINDImplantAssemblyTemplateInformationModel            "1.2.840.10008.5.1.4.44.2"
 #define UID_MOVEImplantAssemblyTemplateInformationModel            "1.2.840.10008.5.1.4.44.3"
 #define UID_GETImplantAssemblyTemplateInformationModel             "1.2.840.10008.5.1.4.44.4"
+
+#define UID_ImplantTemplateGroupStorage                            "1.2.840.10008.5.1.4.45.1"
 #define UID_FINDImplantTemplateGroupInformationModel               "1.2.840.10008.5.1.4.45.2"
 #define UID_MOVEImplantTemplateGroupInformationModel               "1.2.840.10008.5.1.4.45.3"
 #define UID_GETImplantTemplateGroupInformationModel                "1.2.840.10008.5.1.4.45.4"
@@ -690,6 +727,15 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_MOVEProtocolApprovalInformationModel                   "1.2.840.10008.5.1.4.1.1.200.5"
 #define UID_GETProtocolApprovalInformationModel                    "1.2.840.10008.5.1.4.1.1.200.6"
 
+// Inventory Storage, Query/Retrieve, and related Services
+#define UID_InventoryStorage                                       "1.2.840.10008.5.1.4.1.1.201.1"
+#define UID_FINDInventory                                          "1.2.840.10008.5.1.4.1.1.201.2"
+#define UID_MOVEInventory                                          "1.2.840.10008.5.1.4.1.1.201.3"
+#define UID_GETInventory                                           "1.2.840.10008.5.1.4.1.1.201.4"
+#define UID_InventoryCreation                                      "1.2.840.10008.5.1.4.1.1.201.5"
+#define UID_RepositoryQuery                                        "1.2.840.10008.5.1.4.1.1.201.6"
+#define UID_StorageManagementSOPInstance                           "1.2.840.10008.5.1.4.1.1.201.1.1"
+
 // Print Management
 #define UID_BasicFilmSessionSOPClass                               "1.2.840.10008.5.1.1.1"
 #define UID_BasicFilmBoxSOPClass                                   "1.2.840.10008.5.1.1.2"
index 5e950a7c8298417ece8d41c25dfe601dd9e9a70b..25d7ef12d7dce412992be549b3318b4430277ee4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2018, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -129,8 +129,8 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime
     OFCondition setOFDateTime(const OFDateTime &dateTimeValue);
 
     /** get the current element value in OFDateTime format.
-     *  Please note that the element value is expected to be in valid DICOM DT format
-     *  ("YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]"). If the optional time zone ("&ZZZZ") is
+     *  Please note that the element value is expected to be in the DICOM DT format
+     *  "YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]". If the optional time zone ("&ZZZZ") is
      *  missing the local time zone is used.
      *  If this function fails the result variable 'dateTimeValue' is cleared automatically.
      *  @param dateTimeValue reference to OFDateTime variable where the result is stored
@@ -143,7 +143,7 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime
     /** get the current element value in ISO date/time format.
      *  The ISO date/time format supported by this function is "YYYY-MM-DD[ HH:MM[:SS[.FFFFFF]]]
      *  [&HH:MM]" where the brackets enclose optional parts. Please note that the element value
-     *  is expected to be in valid DICOM DT format ("YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]").
+     *  is expected to be in the DICOM DT format "YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]".
      *  If this function fails or the current element value is empty, the result variable
      *  'formattedDateTime' is cleared automatically.
      *  @param formattedDateTime reference to string variable where the result is stored
@@ -255,7 +255,7 @@ class DCMTK_DCMDATA_EXPORT DcmDateTime
     /** get the specified DICOM datetime value in ISO format.
      *  The ISO date/time format supported by this function is "YYYY-MM-DD[ HH:MM[:SS[.FFFFFF]]]
      *  [&HH:MM]" where the brackets enclose optional parts. Please note that the specified
-     *  value is expected to be in valid DICOM DT format ("YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]").
+     *  value is expected to be in the DICOM DT format "YYYYMMDD[HH[MM[SS[.FFFFFF]]]][&ZZZZ]".
      *  If this function fails or the specified DICOM datetime value is empty, the result
      *  variable 'formattedDateTime' is cleared automatically.
      *  @param dicomDateTime string value in DICOM DT format to be converted to ISO format
index 6ac2d79e19825ee64a7a579c1e67dff6c8a067c0..7a561199e865e75622cc5f69a70d865d4d9ae151 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -103,24 +103,38 @@ typedef enum {
     EXS_JPIPReferencedDeflate = 31,
     /// MPEG2 Main Profile at Main Level
     EXS_MPEG2MainProfileAtMainLevel = 32,
+    /// Fragmentable MPEG2 Main Profile / Main Level
+    EXS_FragmentableMPEG2MainProfileMainLevel = 33,
     /// MPEG2 Main Profile at High Level
-    EXS_MPEG2MainProfileAtHighLevel = 33,
+    EXS_MPEG2MainProfileAtHighLevel = 34,
+    /// Fragmentable MPEG2 Main Profile / High Level
+    EXS_FragmentableMPEG2MainProfileHighLevel = 35,
     /// MPEG4 High Profile / Level 4.1
-    EXS_MPEG4HighProfileLevel4_1 = 34,
+    EXS_MPEG4HighProfileLevel4_1 = 36,
+    /// Fragmentable MPEG4 High Profile / Level 4.1
+    EXS_FragmentableMPEG4HighProfileLevel4_1 = 37,
     /// MPEG4 BD-compatible High Profile / Level 4.1
-    EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 35,
+    EXS_MPEG4BDcompatibleHighProfileLevel4_1 = 38,
+    /// Fragmentable MPEG4 BD-compatible High Profile / Level 4.1
+    EXS_FragmentableMPEG4BDcompatibleHighProfileLevel4_1 = 39,
     /// MPEG4 High Profile / Level 4.2 For 2D Video
-    EXS_MPEG4HighProfileLevel4_2_For2DVideo = 36,
+    EXS_MPEG4HighProfileLevel4_2_For2DVideo = 40,
+    /// Fragmentable MPEG4 High Profile / Level 4.2 For 2D Video
+    EXS_FragmentableMPEG4HighProfileLevel4_2_For2DVideo = 41,
     /// MPEG4 High Profile / Level 4.2 For 3D Video
-    EXS_MPEG4HighProfileLevel4_2_For3DVideo = 37,
+    EXS_MPEG4HighProfileLevel4_2_For3DVideo = 42,
+    /// Fragmentable MPEG4 Stereo High Profile / Level 4.2
+    EXS_FragmentableMPEG4HighProfileLevel4_2_For3DVideo = 43,
     /// MPEG4 Stereo High Profile / Level 4.2
-    EXS_MPEG4StereoHighProfileLevel4_2 = 38,
+    EXS_MPEG4StereoHighProfileLevel4_2 = 44,
+    /// Fragmentable HEVC/H.265 Main Profile / Level 5.1
+    EXS_FragmentableMPEG4StereoHighProfileLevel4_2 = 45,
     /// HEVC/H.265 Main Profile / Level 5.1
-    EXS_HEVCMainProfileLevel5_1 = 39,
+    EXS_HEVCMainProfileLevel5_1 = 46,
     /// HEVC/H.265 Main 10 Profile / Level 5.1
-    EXS_HEVCMain10ProfileLevel5_1 = 40,
+    EXS_HEVCMain10ProfileLevel5_1 = 47,
     /// Private GE Little Endian Implicit with big endian pixel data
-    EXS_PrivateGE_LEI_WithBigEndianPixelData = 41
+    EXS_PrivateGE_LEI_WithBigEndianPixelData = 48
 } E_TransferSyntax;
 
 /** enumeration of byte orders
@@ -180,42 +194,93 @@ public:
     /** constructor
      *  @param xfer transfer syntax enum
      */
-    DcmXfer( E_TransferSyntax xfer );
+    DcmXfer(E_TransferSyntax xfer);
 
     /** constructor
      *  @param xferName_xferID transfer syntax name as string
      */
-    DcmXfer( const char *xferName_xferID );
+    DcmXfer(const char *xferName_xferID);
 
     /// copy constructor
-    DcmXfer( const DcmXfer &newXfer );
+    DcmXfer(const DcmXfer &newXfer);
 
     /// destructor
     ~DcmXfer();
 
     /// assignment operator for transfer syntax enum
-    DcmXfer & operator = ( const E_TransferSyntax xfer );
+    DcmXfer & operator=(const E_TransferSyntax xfer);
 
     /// copy assignment operator
-    DcmXfer & operator = ( const DcmXfer &newtag );
+    DcmXfer & operator=(const DcmXfer &newXfer);
+
+    /** comparison operator
+     *  @param xfer transfer syntax enum to compare with
+     *  @return true if equal, false if not equal
+     */
+    OFBool operator==(const E_TransferSyntax xfer) const
+    {
+        return xferSyn == xfer;
+    }
+
+    /** comparison operator
+     *  @param xfer transfer syntax to compare with
+     *  @return true if equal, false if not equal
+     */
+    OFBool operator==(const DcmXfer &xfer) const
+    {
+        return xferSyn == xfer.getXfer();
+    }
+
+    /** comparison operator
+     *  @param xfer transfer syntax enum to compare with
+     *  @return true if not equal, false if equal
+     */
+    OFBool operator!=(const E_TransferSyntax xfer) const
+    {
+        return xferSyn != xfer;
+    }
+
+    /** comparison operator
+     *  @param xfer transfer syntax to compare with
+     *  @return true if not equal, false if equal
+     */
+    OFBool operator!=(const DcmXfer &xfer) const
+    {
+        return xferSyn != xfer.getXfer();
+    }
 
     /// return transfer syntax enum for this transfer syntax
-    inline E_TransferSyntax getXfer() const  { return xferSyn; }
+    inline E_TransferSyntax getXfer() const
+    {
+        return xferSyn;
+    }
 
     /// return byte order for this transfer syntax
-    inline E_ByteOrder getByteOrder() const { return byteOrder; }
+    inline E_ByteOrder getByteOrder() const
+    {
+        return byteOrder;
+    }
 
     /// return byte order for this transfer syntax
-    inline E_ByteOrder getPixelDataByteOrder() const { return pixelDataByteOrder; }
+    inline E_ByteOrder getPixelDataByteOrder() const
+    {
+        return pixelDataByteOrder;
+    }
 
     /// return name string for this transfer syntax
-    inline const char* getXferName() const { return xferName; }
+    inline const char* getXferName() const
+    {
+        return xferName;
+    }
 
     /// return keyword string for this transfer syntax
     const char* getXferKeyword() const;
 
     /// return UID string for this transfer syntax
-    inline const char* getXferID() const { return xferID; }
+    inline const char* getXferID() const
+    {
+        return xferID;
+    }
 
     /// return true if transfer syntax is little endian, false otherwise
     inline OFBool isLittleEndian() const
@@ -224,13 +289,22 @@ public:
     }
 
     /// return true if transfer syntax is big endian, false otherwise
-    inline OFBool isBigEndian() const { return byteOrder == EBO_BigEndian; }
+    inline OFBool isBigEndian() const
+    {
+        return byteOrder == EBO_BigEndian;
+    }
 
     /// return true if transfer syntax is implicit VR, false otherwise
-    inline OFBool isImplicitVR() const { return vrType == EVT_Implicit; }
+    inline OFBool isImplicitVR() const
+    {
+        return vrType == EVT_Implicit;
+    }
 
     /// return true if transfer syntax is explicit VR, false otherwise
-    inline OFBool isExplicitVR() const { return vrType == EVT_Explicit; }
+    inline OFBool isExplicitVR() const
+    {
+        return vrType == EVT_Explicit;
+    }
 
     /// return true if transfer syntax is encapsulated, false otherwise
     inline OFBool isEncapsulated() const
@@ -249,14 +323,20 @@ public:
      *  When called for a non-JPEG transfer syntax, returns 0.
      *  @return 8-bit JPEG process ID
      */
-    inline Uint32 getJPEGProcess8Bit() const { return JPEGProcess8; }
+    inline Uint32 getJPEGProcess8Bit() const
+    {
+        return JPEGProcess8;
+    }
 
     /** return 12-bit JPEG process ID for this transfer syntax.
      *  Lossy JPEG transfer syntaxes support two alternative JPEG encoding processes - 8 and 12 bits.
      *  When called for a non-JPEG transfer syntax, returns 0.
      *  @return 12-bit JPEG process ID
      */
-    inline Uint32 getJPEGProcess12Bit() const { return JPEGProcess12;}
+    inline Uint32 getJPEGProcess12Bit() const
+    {
+        return JPEGProcess12;
+    }
 
     /** check whether transfer syntax uses a lossy compression
      *  @return true if transfer syntax uses a lossy compression, false otherwise
@@ -300,6 +380,15 @@ public:
         return referenced;
     }
 
+    /** check whether transfer syntax allows the encapsulated pixel stream of
+     *  encoded pixel data to be split into one or more fragments
+     *  @return true if transfer syntax supports fragmentable pixel data
+     */
+    inline OFBool isFragmentable() const
+    {
+        return fragmentable;
+    }
+
     /** return the number of bytes needed to describe the tag, length, VR
      *  and any reserved fields for this transfer syntax when encoding the
      *  specified VR.
@@ -348,6 +437,9 @@ private:
     /// flag indicating whether this transfer syntax uses a pixel data URL reference
     OFBool              referenced;
 
+    /// flag indicating whether this transfer syntax supports fragmentable pixel data
+    OFBool              fragmentable;
+
 };
 
 /** global constant describing the byte order on the machine the application
index 33f86329ae749ba2beae039642a161d4e4114988..b08c9f672ff79d4bd80d79148bb29990daf272a4 100644 (file)
@@ -122,9 +122,6 @@ void DcmXMLParseHelper::initLibrary()
     /* check for compatible libxml version */
     LIBXML_TEST_VERSION
 
-    /* temporary buffer needed for xml2dcm_errorFunction - more detailed explanation there */
-    OFString tmpErrorString;
-
     /* initialize the XML library (only required for MT-safety) */
     xmlInitParser();
 
@@ -140,7 +137,6 @@ void DcmXMLParseHelper::initLibrary()
 
     /* enable libxml warnings and error messages */
     xmlGetWarningsDefaultValue = 1;
-    xmlSetGenericErrorFunc(&tmpErrorString, xml2dcm_errorFunction);
 }
 
 
@@ -689,6 +685,11 @@ OFCondition DcmXMLParseHelper::readXmlFile(
 {
     OFCondition result = EC_Normal;
     xfer = EXS_Unknown;
+
+    /* temporary buffer needed for xml2dcm_errorFunction - more detailed explanation there */
+    OFString tmpErrorString;
+    xmlSetGenericErrorFunc(&tmpErrorString, xml2dcm_errorFunction);
+
     xmlGenericError(xmlGenericErrorContext, "--- libxml parsing ------\n");
     /* build an XML tree from the file */
 #if LIBXML_VERSION >= 20703
@@ -785,6 +786,12 @@ OFCondition DcmXMLParseHelper::readXmlFile(
         DCMDATA_ERROR("could not parse document: " << ifname);
         result = EC_XMLParseError;
     }
+
+    /* Reset to default function because we used a local string as context for
+     * the error function.
+     */
+    xmlSetGenericErrorFunc(NULL, NULL);
+
     /* free allocated memory */
     xmlFreeDoc(doc);
     return result;
index 52d6a2a70f6045812c33b1d48d06f28aa77c6197..b0ac91bb97cac241e3f478f14a7f93c419f1573c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2020, OFFIS e.V.
+ *  Copyright (C) 1997-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -30,6 +30,7 @@
 #include "dcmtk/dcmdata/dcpixseq.h"  /* for DcmPixelSequence */
 #include "dcmtk/dcmdata/dcpxitem.h"  /* for DcmPixelItem */
 #include "dcmtk/dcmdata/dcswap.h"    /* for swapIfNecessary */
+#include "dcmtk/dcmdata/dcvrcs.h"    /* for DcmCodeString */
 #include "dcmtk/dcmdata/dcvrui.h"    /* for DcmUniqueIdentifier */
 
 // static member variables
@@ -200,27 +201,37 @@ OFCondition DcmCodec::updateImageType(DcmItem *dataset)
 {
   if (dataset == NULL) return EC_IllegalCall;
 
-  DcmStack stack;
-  OFString imageType("DERIVED");
-  OFString a;
-
-  /* find existing Image Type element */
-  OFCondition status = dataset->search(DCM_ImageType, stack, ESM_fromHere, OFFalse);
-  if (status.good())
+  DcmElement *elem = NULL;
+  /* check for the data element (with non-empty value) */
+  if (dataset->findAndGetElement(DCM_ImageType, elem).good() && !elem->isEmpty())
   {
-    DcmElement *elem = OFstatic_cast(DcmElement *, stack.top());
-    unsigned long pos = 1;
-
-    // append old image type information beginning with second entry
-    while ((elem->getOFString(a, pos++)).good())
+    /* case 1: there is a single value only */
+    if (elem->getNumberOfValues() == 1)
     {
-      imageType += "\\";
-      imageType += a;
+      DCMDATA_DEBUG("DcmCodec::updateImageType() setting data element value 'DERIVED\\SECONDARY'");
+      /* overwrite with a valid value (VM=2-n) */
+      return elem->putString("DERIVED\\SECONDARY");
+    } else {
+      OFString elemValue;
+      /* case 2: value 1 is different from "DERIVED" */
+      if (elem->getOFString(elemValue, 0 /*pos*/).good() && (elemValue != "DERIVED"))
+      {
+        if (elem->ident() == EVR_CS)
+        {
+          DCMDATA_DEBUG("DcmCodec::updateImageType() setting data element value 1 to 'DERIVED'");
+          /* overwrite value 1 */
+          return OFstatic_cast(DcmCodeString *, elem)->putOFStringAtPos("DERIVED", 0);
+        } else {
+          /* cannot overwrite value with wrong VR (should never happen) */
+          DCMDATA_ERROR("DcmCodec: Internal ERROR: Cannot update element ImageType " << DCM_ImageType << " with wrong VR");
+          return EC_InvalidVR;
+        }
+      }
     }
   }
 
-  // insert new Image Type, replace old value
-  return dataset->putAndInsertString(DCM_ImageType, imageType.c_str(), OFTrue);
+  /* nothing to do */
+  return EC_Normal;
 }
 
 
index 90508c9f8956cc5f976c0a8199ffb7e3e146a605..3ff1057d7cf50857a833d986cd30ec7df34be4c2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2022, OFFIS e.V.
+ *  Copyright (C) 2002-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -355,7 +355,7 @@ static OFBool compareAttributes(DcmElement *elem1,
         if (elem2 != NULL)
         {
             /* check whether tags are equal */
-            if (elem1->getTag().getXTag() == elem2->getTag().getXTag())
+            if (elem1->getTag() == elem2->getTag())
             {
                 DcmVR vr1(elem1->getVR());
                 DcmVR vr2(elem2->getVR());
@@ -463,7 +463,7 @@ static OFBool compareSQAttributes(DcmSequenceOfItems *seq1,
         if (seq2 != NULL)
         {
             /* check whether tags are equal */
-            if (seq1->getTag().getXTag() == seq2->getTag().getXTag())
+            if (seq1->getTag() == seq2->getTag())
             {
                 const unsigned long card1 = seq1->card();
                 const unsigned long card2 = seq2->card();
@@ -652,6 +652,9 @@ OFString DicomDirInterface::recordTypeToName(const E_DirRecType recordType)
         case ERT_Annotation:
             recordName = "Annotation";
             break;
+        case ERT_Inventory:
+            recordName = "Inventory";
+            break;
         default:
             recordName = "(unknown-directory-record-type)";
             break;
@@ -711,6 +714,7 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
              compare(sopClass, UID_VolumeRenderingVolumetricPresentationStateStorage) ||
              compare(sopClass, UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage) ||
              compare(sopClass, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage) ||
+             compare(sopClass, UID_VariableModalityLUTSoftcopyPresentationStateStorage) ||
              compare(sopClass, UID_BasicStructuredDisplayStorage))
     {
         result = ERT_Presentation;
@@ -729,7 +733,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
              compare(sopClass, UID_ElectrooculogramWaveformStorage) ||
              compare(sopClass, UID_SleepElectroencephalogramWaveformStorage) ||
              compare(sopClass, UID_MultichannelRespiratoryWaveformStorage) ||
-             compare(sopClass, UID_BodyPositionWaveformStorage))
+             compare(sopClass, UID_BodyPositionWaveformStorage) ||
+             compare(sopClass, UID_General32BitECGWaveformStorage))
     {
         result = ERT_Waveform;
     }
@@ -800,7 +805,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
     else if (compare(sopClass, UID_ImplantAssemblyTemplateStorage))
         result = ERT_ImplantAssy;
     else if (compare(sopClass, UID_RTBeamsDeliveryInstructionStorage) ||
-             compare(sopClass, UID_RTBrachyApplicationSetupDeliveryInstructionStorage))
+             compare(sopClass, UID_RTBrachyApplicationSetupDeliveryInstructionStorage) ||
+             compare(sopClass, UID_RTPatientPositionAcquisitionInstructionStorage))
     {
         result = ERT_Plan;
     }
@@ -831,6 +837,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
     }
     else if (compare(sopClass, UID_MicroscopyBulkSimpleAnnotationsStorage))
         result = ERT_Annotation;
+    else if (compare(sopClass, UID_InventoryStorage))
+        result = ERT_Inventory;
     return result;
 }
 
@@ -1096,10 +1104,12 @@ static OFBool isMultiframeStorageSOPClass(const OFString &sopClassUID)
     return compare(sopClassUID, UID_BreastProjectionXRayImageStorageForPresentation) ||
            compare(sopClassUID, UID_BreastProjectionXRayImageStorageForProcessing) ||
            compare(sopClassUID, UID_BreastTomosynthesisImageStorage) ||
+           compare(sopClassUID, UID_EnhancedContinuousRTImageStorage) ||
            compare(sopClassUID, UID_EnhancedCTImageStorage) ||
            compare(sopClassUID, UID_EnhancedMRColorImageStorage) ||
            compare(sopClassUID, UID_EnhancedMRImageStorage) ||
            compare(sopClassUID, UID_EnhancedPETImageStorage) ||
+           compare(sopClassUID, UID_EnhancedRTImageStorage) ||
            compare(sopClassUID, UID_EnhancedUSVolumeStorage) ||
            compare(sopClassUID, UID_EnhancedXAImageStorage) ||
            compare(sopClassUID, UID_EnhancedXRFImageStorage) ||
@@ -1671,7 +1681,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_ElectromyogramWaveformStorage) ||
                                 compare(mediaSOPClassUID, UID_ElectrooculogramWaveformStorage) ||
                                 compare(mediaSOPClassUID, UID_SleepElectroencephalogramWaveformStorage) ||
-                                compare(mediaSOPClassUID, UID_BodyPositionWaveformStorage);
+                                compare(mediaSOPClassUID, UID_BodyPositionWaveformStorage) ||
+                                compare(mediaSOPClassUID, UID_General32BitECGWaveformStorage);
                     }
                     /* is it one of the presentation state SOP Classes? */
                     if (!found)
@@ -1686,7 +1697,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_AdvancedBlendingPresentationStateStorage) ||
                                 compare(mediaSOPClassUID, UID_VolumeRenderingVolumetricPresentationStateStorage) ||
                                 compare(mediaSOPClassUID, UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage) ||
-                                compare(mediaSOPClassUID, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage);
+                                compare(mediaSOPClassUID, UID_MultipleVolumeRenderingVolumetricPresentationStateStorage) ||
+                                compare(mediaSOPClassUID, UID_VariableModalityLUTSoftcopyPresentationStateStorage);
                     }
                     /* is it one of the encapsulated document SOP Classes? */
                     if (!found)
@@ -1746,7 +1758,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_ColorPaletteStorage) ||
                                 compare(mediaSOPClassUID, UID_TractographyResultsStorage) ||
                                 compare(mediaSOPClassUID, UID_ContentAssessmentResultsStorage) ||
-                                compare(mediaSOPClassUID, UID_MicroscopyBulkSimpleAnnotationsStorage);
+                                compare(mediaSOPClassUID, UID_MicroscopyBulkSimpleAnnotationsStorage) ||
+                                compare(mediaSOPClassUID, UID_InventoryStorage);
                     }
                     /* the following SOP classes have been retired with previous editions of the DICOM standard */
                     if (!found && RetiredSOPClassSupport)
@@ -2546,6 +2559,20 @@ OFCondition DicomDirInterface::checkMandatoryAttributes(DcmMetaInfo *metainfo,
                 result = EC_MissingAttribute;
             if (!checkExistsWithValue(dataset, DCM_ImplantTemplateGroupIssuer, filename))
                 result = EC_MissingAttribute;
+        }
+        else if (recordType == ERT_Inventory)
+        {
+            /* check whether all type 1 elements are really present */
+            if (!checkExistsWithValue(dataset, DCM_ContentDate, filename))
+                result = EC_MissingAttribute;
+            if (!checkExistsWithValue(dataset, DCM_ContentTime, filename))
+                result = EC_MissingAttribute;
+            if (!checkExistsWithValue(dataset, DCM_InventoryLevel, filename))
+                result = EC_MissingAttribute;
+            if (!checkExistsWithValue(dataset, DCM_InventoryCompletionStatus, filename))
+                result = EC_MissingAttribute;
+            if (!checkExistsWithValue(dataset, DCM_TotalNumberOfStudyRecords, filename))
+                result = EC_MissingAttribute;
         } else {
             /* PatientID is type 1 in DICOMDIR and type 2 in images */
             if (!InventMode)
@@ -3050,6 +3077,7 @@ OFBool DicomDirInterface::recordMatchesDataset(DcmDirectoryRecord *record,
             case ERT_Assessment:
             case ERT_Radiotherapy:
             case ERT_Annotation:
+            case ERT_Inventory:
                 /* The attribute ReferencedSOPInstanceUID is automatically
                  * put into a Directory Record when a filename is present.
                 */
@@ -4338,6 +4366,41 @@ DcmDirectoryRecord *DicomDirInterface::buildAnnotationRecord(DcmDirectoryRecord
 }
 
 
+// create or update inventory record and copy required values from dataset
+DcmDirectoryRecord *DicomDirInterface::buildInventoryRecord(DcmDirectoryRecord *record,
+                                                            DcmFileFormat *fileformat,
+                                                            const OFString &referencedFileID,
+                                                            const OFFilename &sourceFilename)
+{
+    /* create new inventory record */
+    if (record == NULL)
+        record = new DcmDirectoryRecord(ERT_Implant, referencedFileID.c_str(), sourceFilename, fileformat);
+    if (record != NULL)
+    {
+        /* check whether new record is ok */
+        if (record->error().good())
+        {
+            DcmDataset *dataset = fileformat->getDataset();
+            /* copy attribute values from dataset to inventory record */
+            copyElementType1(dataset, DCM_ContentDate, record, sourceFilename);
+            copyElementType1(dataset, DCM_ContentTime, record, sourceFilename);
+            copyElementType1(dataset, DCM_InventoryLevel, record, sourceFilename);
+            copyElementType1(dataset, DCM_InventoryCompletionStatus, record, sourceFilename);
+            copyElementType1(dataset, DCM_TotalNumberOfStudyRecords, record, sourceFilename);
+            copyElementType2(dataset, DCM_InventoryPurpose, record, sourceFilename);
+            copyElementType2(dataset, DCM_ScopeOfInventorySequence, record, sourceFilename);
+        } else {
+            printRecordErrorMessage(record->error(), ERT_Inventory, "create");
+            /* free memory */
+            delete record;
+            record = NULL;
+        }
+    } else
+        printRecordErrorMessage(EC_MemoryExhausted, ERT_Inventory, "create");
+    return record;
+}
+
+
 // create or update image record and copy required values from dataset
 DcmDirectoryRecord *DicomDirInterface::buildImageRecord(DcmDirectoryRecord *record,
                                                         DcmFileFormat *fileformat,
@@ -4777,6 +4840,9 @@ DcmDirectoryRecord *DicomDirInterface::addRecord(DcmDirectoryRecord *parent,
                 case ERT_Annotation:
                     record = buildAnnotationRecord(record, fileformat, referencedFileID, sourceFilename);
                     break;
+                case ERT_Inventory:
+                    record = buildInventoryRecord(record, fileformat, referencedFileID, sourceFilename);
+                    break;
                 default:
                     /* it can only be an image */
                     record = buildImageRecord(record, fileformat, referencedFileID, sourceFilename);
@@ -4922,11 +4988,25 @@ void DicomDirInterface::inventMissingInstanceLevelAttributes(DcmDirectoryRecord
             switch (record->getRecordType())
             {
                 case ERT_Image:
+                case ERT_SRDocument:
+                case ERT_Presentation:
+                case ERT_Waveform:
                 case ERT_RTDose:
                 case ERT_RTStructureSet:
                 case ERT_RTPlan:
-                case ERT_StoredPrint:
+                case ERT_RTTreatRecord:
+                case ERT_KeyObjectDoc:
+                case ERT_Registration:
+                case ERT_Fiducial:
+                case ERT_Spectroscopy:
+                case ERT_EncapDoc:
+                case ERT_ValueMap:
                 case ERT_Surface:
+                case ERT_Measurement:
+                case ERT_Tract:
+                case ERT_Assessment:
+                case ERT_Radiotherapy:
+                case ERT_Annotation:
                     if (!record->tagExistsWithValue(DCM_InstanceNumber))
                         setDefaultValue(record, DCM_InstanceNumber, AutoInstanceNumber++);
                     break;
@@ -4943,23 +5023,11 @@ void DicomDirInterface::inventMissingInstanceLevelAttributes(DcmDirectoryRecord
                     if (!record->tagExistsWithValue(DCM_RETIRED_CurveNumber))
                         setDefaultValue(record, DCM_RETIRED_CurveNumber, AutoCurveNumber++);
                     break;
-                case ERT_SRDocument:
-                case ERT_Presentation:
-                case ERT_Waveform:
-                case ERT_RTTreatRecord:
-                case ERT_KeyObjectDoc:
-                case ERT_Registration:
-                case ERT_Fiducial:
+                case ERT_StoredPrint:
                 case ERT_RawData:
-                case ERT_Spectroscopy:
-                case ERT_EncapDoc:
-                case ERT_ValueMap:
                 case ERT_Stereometric:
-                case ERT_Measurement:
                 case ERT_Plan:
                 case ERT_SurfaceScan:
-                case ERT_Tract:
-                case ERT_Assessment:
                     /* nothing to do */
                     break;
                 default:
@@ -5027,6 +5095,12 @@ OFCondition DicomDirInterface::addDicomFile(const OFFilename &filename,
                 /* add an implant assy record below the root */
                 if (addRecord(rootRecord, ERT_ImplantAssy, &fileformat, fileID, pathname) == NULL)
                     result = EC_CorruptedData;
+            }
+            else if (compare(sopClass, UID_InventoryStorage))
+            {
+                /* add an inventory record below the root */
+                if (addRecord(rootRecord, ERT_Inventory, &fileformat, fileID, pathname) == NULL)
+                    result = EC_CorruptedData;
             } else {
                 /* add a patient record below the root */
                 DcmDirectoryRecord *patientRecord = addRecord(rootRecord, ERT_Patient, &fileformat, fileID, pathname);
@@ -5518,7 +5592,7 @@ OFBool DicomDirInterface::warnAboutInconsistentAttributes(DcmDirectoryRecord *re
             if ((delem != NULL) && (delem->getLength() > 0))
             {
                 /* record attribute has a value */
-                tag = delem->getTag().getXTag();
+                tag = delem->getTag();
                 if (dataset->tagExistsWithValue(tag))
                 {
                     if (delem->getTag().getEVR() == EVR_SQ)
index 819c28381f78e02bd030961ce0c97a3e771ff78e..4475a6f26c929e0aa0f05cba978b476147c8f4c2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -523,7 +523,7 @@ Uint32 DcmDicomDir::lengthUntilSQ(DcmDataset &dset,
         DcmXfer xf(oxfer);
         templen += xf.sizeofTagHeader(dO->getVR());
 
-        if ( dO->getTag().getXTag() == DCM_DirectoryRecordSequence )
+        if ( dO->getTag() == DCM_DirectoryRecordSequence )
             break;
 
         Uint32 sublength = dO->getLength( oxfer, enctype );
index f28c362e9e02267ea3d0feb355c0bbc54813d049..cc4cf90703188c09fe25387e58aeae972e0ee7fd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
-#include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/dcmdata/dcdict.h"
-#include "dcmtk/ofstd/ofdefine.h"
 #include "dcmtk/dcmdata/dcdicent.h"
 #include "dcmtk/dcmdata/dctypes.h"
+#include "dcmtk/ofstd/ofdefine.h"
 #include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/ofstd/offile.h"
 
@@ -361,7 +360,7 @@ parseWholeTagField(char* s, DcmTagKey& key,
 
     if (pi > 0)
     {
-      // copy private creator name
+      // copy private creator identifier
       size_t buflen = strlen(pc) + 1;
       privCreator = new char[buflen]; // deleted by caller
       if (privCreator) OFStandard::strlcpy(privCreator, pc, buflen);
index c0c9d5541b89d713d05b6aeae39f16ad6638464e..0466d17caa29494e9757b8c54b5e14df294d17b1 100644 (file)
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad2
-**   Date: 2022-10-17 21:04:19
+**   Date: 2023-07-14 12:18:43
 **   Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdictbi
 **
 **   From: ../data/dicom.dic
@@ -861,7 +861,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0008, 0x0403, 0x0008, 0x0403,
-      EVR_CS, "InventoryContentLevel", 1, 1, "DICOM",
+      EVR_CS, "InventoryLevel", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0008, 0x0404, 0x0008, 0x0404,
@@ -917,7 +917,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0008, 0x0411, 0x0008, 0x0411,
-      EVR_SQ, "UIDListMatchingSequence", 1, 1, "DICOM",
+      EVR_SQ, "ListOfUIDMatchingSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0008, 0x0412, 0x0008, 0x0412,
@@ -1405,7 +1405,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0008, 0x9007, 0x0008, 0x9007,
-      EVR_CS, "FrameType", 4, 4, "DICOM",
+      EVR_CS, "FrameType", 4, 5, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0008, 0x9092, 0x0008, 0x9092,
@@ -5274,6 +5274,14 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_DT, "CalibrationDateTime", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0018, 0x1204, 0x0018, 0x1204,
+      EVR_DA, "DateOfManufacture", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x1205, 0x0018, 0x1205,
+      EVR_DA, "DateOfInstallation", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0018, 0x1210, 0x0018, 0x1210,
       EVR_SH, "ConvolutionKernel", 1, -1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -7742,6 +7750,90 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_xs, "ZeroVelocityPixelValue", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0018, 0x9821, 0x0018, 0x9821,
+      EVR_SQ, "PhotoacousticExcitationCharacteristicsSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9822, 0x0018, 0x9822,
+      EVR_FD, "ExcitationSpectralWidth", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9823, 0x0018, 0x9823,
+      EVR_FD, "ExcitationEnergy", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9824, 0x0018, 0x9824,
+      EVR_FD, "ExcitationPulseDuration", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9825, 0x0018, 0x9825,
+      EVR_SQ, "ExcitationWavelengthSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9826, 0x0018, 0x9826,
+      EVR_FD, "ExcitationWavelength", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9828, 0x0018, 0x9828,
+      EVR_CS, "IlluminationTranslationFlag", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9829, 0x0018, 0x9829,
+      EVR_CS, "AcousticCouplingMediumFlag", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x982a, 0x0018, 0x982a,
+      EVR_SQ, "AcousticCouplingMediumCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x982b, 0x0018, 0x982b,
+      EVR_FD, "AcousticCouplingMediumTemperature", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x982c, 0x0018, 0x982c,
+      EVR_SQ, "TransducerResponseSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x982d, 0x0018, 0x982d,
+      EVR_FD, "CenterFrequency", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x982e, 0x0018, 0x982e,
+      EVR_FD, "FractionalBandwidth", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x982f, 0x0018, 0x982f,
+      EVR_FD, "LowerCutoffFrequency", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9830, 0x0018, 0x9830,
+      EVR_FD, "UpperCutoffFrequency", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9831, 0x0018, 0x9831,
+      EVR_SQ, "TransducerTechnologySequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9832, 0x0018, 0x9832,
+      EVR_SQ, "SoundSpeedCorrectionMechanismCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9833, 0x0018, 0x9833,
+      EVR_FD, "ObjectSoundSpeed", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9834, 0x0018, 0x9834,
+      EVR_FD, "AcousticCouplingMediumSoundSpeed", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9835, 0x0018, 0x9835,
+      EVR_SQ, "PhotoacousticImageFrameTypeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0018, 0x9836, 0x0018, 0x9836,
+      EVR_SQ, "ImageDataTypeCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0018, 0x9900, 0x0018, 0x9900,
       EVR_LO, "ReferenceLocationLabel", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -16506,6 +16598,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "ModalityLUTSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0028, 0x3001, 0x0028, 0x3001,
+      EVR_SQ, "VariableModalityLUTSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0028, 0x3002, 0x0028, 0x3002,
       EVR_xs, "LUTDescriptor", 3, 3, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -26548,6 +26644,222 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SH, "FluenceModeID", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x3002, 0x0100, 0x3002, 0x0100,
+      EVR_IS, "SelectedFrameNumber", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0101, 0x3002, 0x0101,
+      EVR_SQ, "SelectedFrameFunctionalGroupsSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0102, 0x3002, 0x0102,
+      EVR_SQ, "RTImageFrameGeneralContentSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0103, 0x3002, 0x0103,
+      EVR_SQ, "RTImageFrameContextSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0104, 0x3002, 0x0104,
+      EVR_SQ, "RTImageScopeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0105, 0x3002, 0x0105,
+      EVR_CS, "BeamModifierCoordinatesPresenceFlag", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0106, 0x3002, 0x0106,
+      EVR_FD, "StartCumulativeMeterset", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0107, 0x3002, 0x0107,
+      EVR_FD, "StopCumulativeMeterset", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0108, 0x3002, 0x0108,
+      EVR_SQ, "RTAcquisitionPatientPositionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0109, 0x3002, 0x0109,
+      EVR_SQ, "RTImageFrameImagingDevicePositionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x010a, 0x3002, 0x010a,
+      EVR_SQ, "RTImageFramekVRadiationAcquisitionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x010b, 0x3002, 0x010b,
+      EVR_SQ, "RTImageFrameMVRadiationAcquisitionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x010c, 0x3002, 0x010c,
+      EVR_SQ, "RTImageFrameRadiationAcquisitionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x010d, 0x3002, 0x010d,
+      EVR_SQ, "ImagingSourcePositionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x010e, 0x3002, 0x010e,
+      EVR_SQ, "ImageReceptorPositionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x010f, 0x3002, 0x010f,
+      EVR_FD, "DevicePositionToEquipmentMappingMatrix", 16, 16, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0110, 0x3002, 0x0110,
+      EVR_SQ, "DevicePositionParameterSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0111, 0x3002, 0x0111,
+      EVR_CS, "ImagingSourceLocationSpecificationType", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0112, 0x3002, 0x0112,
+      EVR_SQ, "ImagingDeviceLocationMatrixSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0113, 0x3002, 0x0113,
+      EVR_SQ, "ImagingDeviceLocationParameterSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0114, 0x3002, 0x0114,
+      EVR_SQ, "ImagingApertureSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0115, 0x3002, 0x0115,
+      EVR_CS, "ImagingApertureSpecificationType", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0116, 0x3002, 0x0116,
+      EVR_US, "NumberOfAcquisitionDevices", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0117, 0x3002, 0x0117,
+      EVR_SQ, "AcquisitionDeviceSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0118, 0x3002, 0x0118,
+      EVR_SQ, "AcquisitionTaskSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0119, 0x3002, 0x0119,
+      EVR_SQ, "AcquisitionTaskWorkitemCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x011a, 0x3002, 0x011a,
+      EVR_SQ, "AcquisitionSubtaskSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x011b, 0x3002, 0x011b,
+      EVR_SQ, "SubtaskWorkitemCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x011c, 0x3002, 0x011c,
+      EVR_US, "AcquisitionTaskIndex", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x011d, 0x3002, 0x011d,
+      EVR_US, "AcquisitionSubtaskIndex", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x011e, 0x3002, 0x011e,
+      EVR_SQ, "ReferencedBaselineParametersRTRadiationInstanceSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x011f, 0x3002, 0x011f,
+      EVR_SQ, "PositionAcquisitionTemplateIdentificationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0120, 0x3002, 0x0120,
+      EVR_ST, "PositionAcquisitionTemplateID", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0121, 0x3002, 0x0121,
+      EVR_LO, "PositionAcquisitionTemplateName", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0122, 0x3002, 0x0122,
+      EVR_SQ, "PositionAcquisitionTemplateCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0123, 0x3002, 0x0123,
+      EVR_LT, "PositionAcquisitionTemplateDescription", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0124, 0x3002, 0x0124,
+      EVR_SQ, "AcquisitionTaskApplicabilitySequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0125, 0x3002, 0x0125,
+      EVR_SQ, "ProjectionImagingAcquisitionParameterSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0126, 0x3002, 0x0126,
+      EVR_SQ, "CTImagingAcquisitionParameterSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0127, 0x3002, 0x0127,
+      EVR_SQ, "KVImagingGenerationParametersSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0128, 0x3002, 0x0128,
+      EVR_SQ, "MVImagingGenerationParametersSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0129, 0x3002, 0x0129,
+      EVR_CS, "AcquisitionSignalType", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x012a, 0x3002, 0x012a,
+      EVR_CS, "AcquisitionMethod", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x012b, 0x3002, 0x012b,
+      EVR_SQ, "ScanStartPositionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x012c, 0x3002, 0x012c,
+      EVR_SQ, "ScanStopPositionSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x012d, 0x3002, 0x012d,
+      EVR_FD, "ImagingSourceToBeamModifierDefinitionPlaneDistance", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x012e, 0x3002, 0x012e,
+      EVR_CS, "ScanArcType", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x012f, 0x3002, 0x012f,
+      EVR_CS, "DetectorPositioningType", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0130, 0x3002, 0x0130,
+      EVR_SQ, "AdditionalRTAccessoryDeviceSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0131, 0x3002, 0x0131,
+      EVR_SQ, "DeviceSpecificAcquisitionParameterSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0132, 0x3002, 0x0132,
+      EVR_SQ, "ReferencedPositionReferenceInstanceSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0133, 0x3002, 0x0133,
+      EVR_SQ, "EnergyDerivationCodeSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0134, 0x3002, 0x0134,
+      EVR_FD, "MaximumCumulativeMetersetExposure", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3002, 0x0135, 0x3002, 0x0135,
+      EVR_SQ, "AcquisitionInitiationSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x3004, 0x0001, 0x3004, 0x0001,
       EVR_CS, "DVHType", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -26585,11 +26897,11 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3004, 0x0010, 0x3004, 0x0010,
-      EVR_SQ, "RTDoseROISequence", 1, 1, "DICOM",
+      EVR_SQ, "RETIRED_RTDoseROISequence", 1, 1, "DICOM/retired",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3004, 0x0012, 0x3004, 0x0012,
-      EVR_DS, "DoseValue", 1, 1, "DICOM",
+      EVR_DS, "RETIRED_DoseValue", 1, 1, "DICOM/retired",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3004, 0x0014, 0x3004, 0x0014,
@@ -26909,7 +27221,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3008, 0x002b, 0x3008, 0x002b,
-      EVR_SH, "TreatmentTerminationCode", 1, 1, "DICOM",
+      EVR_SH, "RETIRED_TreatmentTerminationCode", 1, 1, "DICOM/retired",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3008, 0x002c, 0x3008, 0x002c,
@@ -27080,6 +27392,22 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "BeamLimitingDeviceLeafPairsSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x3008, 0x00a1, 0x3008, 0x00a1,
+      EVR_SQ, "EnhancedRTBeamLimitingDeviceSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3008, 0x00a2, 0x3008, 0x00a2,
+      EVR_SQ, "EnhancedRTBeamLimitingOpeningSequence", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3008, 0x00a3, 0x3008, 0x00a3,
+      EVR_CS, "EnhancedRTBeamLimitingDeviceDefinitionFlag", 1, 1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x3008, 0x00a4, 0x3008, 0x00a4,
+      EVR_FD, "ParallelRTBeamDelimiterOpeningExtents", 2, -1, "DICOM",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x3008, 0x00b0, 0x3008, 0x00b0,
       EVR_SQ, "RecordedWedgeSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -30445,7 +30773,7 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3010, 0x0090, 0x3010, 0x0090,
-      EVR_CS, "RoboticBaseLocationIndicator", 1, 1, "DICOM",
+      EVR_CS, "RETIRED_RoboticBaseLocationIndicator", 1, 1, "DICOM/retired",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x3010, 0x0091, 0x3010, 0x0091,
index e4ea26de5a3b6ac1b744cb87e2fc8d28c114d301..c5d53e32591e7ba524730639fcf3b6b86a5863ad 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -97,7 +97,8 @@ static const char *DRTypeNames[] =
     "TRACT",
     "ASSESSMENT",
     "RADIOTHERAPY",
-    "ANNOTATION"
+    "ANNOTATION",
+    "INVENTORY"
 };
 
 static const short DIM_OF_DRTypeNames = OFstatic_cast(short, (sizeof(DRTypeNames) / sizeof(DRTypeNames[0])));
@@ -331,6 +332,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                 case ERT_Implant:
                 case ERT_ImplantGroup:
                 case ERT_ImplantAssy:
+                case ERT_Inventory:
                 case ERT_Private:
                     l_error = EC_Normal;
                     break;
@@ -530,6 +532,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
         case ERT_Assessment:
         case ERT_Radiotherapy:
         case ERT_Annotation:
+        case ERT_Inventory:
         case ERT_Private:
             switch (lowerRecord)
             {
index 7c59077f5e72fcca98d3a10a30ff6867bfecb766..1524904be9bd5da3ea829cfa05109a48f1c15d89 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -224,8 +224,8 @@ int DcmElement::compare(const DcmElement& rhs) const
     DcmElement* myThis = OFconst_cast(DcmElement*, this);
     DcmElement* myRhs = OFconst_cast(DcmElement*, &rhs);
 
-    DcmTagKey thisKey = (*myThis).getTag().getXTag();
-    DcmTagKey rhsKey = (*myRhs).getTag().getXTag();
+    DcmTagKey thisKey = (*myThis).getTag();
+    DcmTagKey rhsKey = (*myRhs).getTag();
 
     if ( thisKey > rhsKey )
     {
@@ -1380,6 +1380,10 @@ OFCondition DcmElement::write(DcmOutputStream &outStream,
             /* write tag and length information to it, do something */
             if (getTransferState() == ERW_init)
             {
+                // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+                // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+                outStream.write(NULL, 0);
+
                 /* first compare with DCM_TagInfoLength (12). If there is not enough space
                  * in the buffer, check if the buffer is still sufficient for the requirements
                  * of this element, which may need only 8 instead of 12 bytes.
@@ -2008,7 +2012,8 @@ OFCondition DcmElement::createValueFromTempFile(DcmInputStreamFactory *factory,
 
 
 OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset,
-                                                 Uint32 &frameSize) const
+                                                 Uint32 &frameSize,
+                                                 OFBool pixelDataIsUncompressed) const
 {
     OFCondition result = EC_IllegalParameter;
     if (dataset != NULL)
@@ -2017,7 +2022,14 @@ OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset,
         Uint16 cols = 0;
         Uint16 samplesPerPixel = 0;
         Uint16 bitsAllocated = 0;
-        /* retrieve values from dataset (and check them for validity and plausibility) */
+        Sint32 numberOfFrames = 1;
+        OFString photometricInterpretation;
+
+        /* retrieve number of frames from dataset (may be absent) */
+        (void) dataset->findAndGetSint32(DCM_NumberOfFrames, numberOfFrames);
+        if (numberOfFrames < 1) numberOfFrames = 1;
+
+        /* retrieve further values from dataset (and check them for validity and plausibility) */
         GET_AND_CHECK_UINT16_VALUE(DCM_Columns, cols)
         else if (cols == 0)
             DCMDATA_WARN("DcmElement: Dubious value (" << cols << ") for element Columns " << DCM_Columns);
@@ -2033,7 +2045,6 @@ OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset,
             else /* result.good() */
             {
                 /* also need to check value of PhotometricInterpretation */
-                OFString photometricInterpretation;
                 if (dataset->findAndGetOFStringArray(DCM_PhotometricInterpretation, photometricInterpretation).good())
                 {
                     if (photometricInterpretation.empty())
@@ -2077,6 +2088,40 @@ OFCondition DcmElement::getUncompressedFrameSize(DcmItem *dataset,
         /* if all checks were passed... */
         if (result.good())
         {
+            if (pixelDataIsUncompressed && (photometricInterpretation == "YBR_FULL_422"))
+            {
+              /* YBR_FULL_422 can exist in uncompressed format, but in many cases
+               * images claiming to be YBR_FULL_422 are in fact formerly compressed
+               * images in YBR_FULL color model where the decoder has failed to update
+               * the photometric interpretation. We can keep these apart by checking
+               * the size of the pixel data and the number of frames.
+               */
+               Uint32 pixelLen = 0;
+               DcmElement *pixData = NULL;
+               result = dataset->findAndGetElement(DCM_PixelData, pixData);
+               if (result.good() && pixData && ((pixelLen = pixData->getLength()) > 0))
+               {
+                  const Uint32 v1 = rows * cols * 3;
+                  const Uint32 v2 = (bitsAllocated / 8) * v1;
+                  const Uint32 v3 = ((bitsAllocated % 8) * v1 + 7) / 8;
+
+                  if (pixelLen >= (v2 + v3) * numberOfFrames)
+                  {
+                     /* the size of the pixel data indicates that no subsampling is present. We assume YBR_FULL. */
+                     DCMDATA_WARN("DcmElement: PhotometricInterpretation probably incorrect, assuming YBR_FULL instead of YBR_FULL_422");
+                  }
+                  else
+                  {
+                     /* the size of the pixel data indicates subsampling is present. We assume YBR_FULL_422,
+                      * which means that the frame size can be computed by setting samplesPerPixel to 2.
+                      */
+                     samplesPerPixel = 2;
+                  }
+               }
+               else
+                   DCMDATA_WARN("DcmElement: failed to compute size of PixelData element");
+            }
+
             /* compute frame size (TODO: check for 32-bit integer overflow?) */
             if ((bitsAllocated % 8) == 0)
             {
@@ -2213,6 +2258,10 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum,
     {
       if (vmNum != 2) result = EC_ValueMultiplicityViolated;
     }
+    else if (vmStr == "2-4")
+    {
+      if ((vmNum < 2) || (vmNum > 4)) result = EC_ValueMultiplicityViolated;
+    }
     else if (vmStr == "2-n")
     {
       if (vmNum < 2) result = EC_ValueMultiplicityViolated;
@@ -2237,6 +2286,14 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum,
     {
       if (vmNum != 4) result = EC_ValueMultiplicityViolated;
     }
+    else if (vmStr == "4-5")
+    {
+      if ((vmNum < 4) || (vmNum > 5)) result = EC_ValueMultiplicityViolated;
+    }
+    else if (vmStr == "4-4n")
+    {
+      if ((vmNum % 4) != 0) result = EC_ValueMultiplicityViolated;
+    }
     else if (vmStr == "5")
     {
       if (vmNum != 5) result = EC_ValueMultiplicityViolated;
@@ -2249,6 +2306,10 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum,
     {
       if (vmNum != 6) result = EC_ValueMultiplicityViolated;
     }
+    else if (vmStr == "6-n")
+    {
+      if (vmNum < 6) result = EC_ValueMultiplicityViolated;
+    }
     else if (vmStr == "7")
     {
       if (vmNum != 7) result = EC_ValueMultiplicityViolated;
@@ -2265,6 +2326,10 @@ OFCondition DcmElement::checkVM(const unsigned long vmNum,
     {
       if (vmNum != 9) result = EC_ValueMultiplicityViolated;
     }
+    else if (vmStr == "11")
+    {
+      if (vmNum != 11) result = EC_ValueMultiplicityViolated;
+    }
     else if (vmStr == "16")
     {
       if (vmNum != 16) result = EC_ValueMultiplicityViolated;
index 77d60817e64cb71010d89b03d7d8648130542aaf..2073cc900f29a5a6fc66f79a408fe6acedd34a0b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2018-2021, OFFIS e.V.
+ *  Copyright (C) 2018-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -503,7 +503,7 @@ void DcmEncapsulatedDocument::addCDACommandlineOptions(OFCommandLine &cmd)
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
   cmd.addParam("cdafile-in", "CDA input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)");
   addGeneralOptions(cmd);
   addDocumentOptions(cmd);
   cmd.addSubGroup("override CDA data:");
@@ -520,7 +520,7 @@ void DcmEncapsulatedDocument::addPDFCommandlineOptions(OFCommandLine &cmd)
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
   cmd.addParam("pdffile-in", "PDF input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)");
   addGeneralOptions(cmd);
   addDocumentOptions(cmd);
   addOutputOptions(cmd);
@@ -532,7 +532,7 @@ void DcmEncapsulatedDocument::addSTLCommandlineOptions(OFCommandLine &cmd)
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
   cmd.addParam("stlfile-in", "STL input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-out", "DICOM output filename (\"-\" for stdout)");
   addGeneralOptions(cmd);
   addDocumentOptions(cmd);
   cmd.addSubGroup("enhanced general equipment:");
index 52ed38127d362c130e5ab925a628ed51f4e92f72..4f72dee83d3034459261667d5154368a3431805e 100644 (file)
@@ -298,11 +298,10 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
         if (obj != NULL)
             tag = obj->getTag();
 
-        DcmTagKey xtag = tag.getXTag();
         DcmElement *elem = OFstatic_cast(DcmElement *, obj);
 
-        /* go ahead and scrutinize one particular data element (depending on xtag) */
-        if (xtag == DCM_FileMetaInformationGroupLength)     // (0002,0000)
+        /* go ahead and scrutinize one particular data element (depending on tag) */
+        if (tag == DCM_FileMetaInformationGroupLength)     // (0002,0000)
         {
             if (elem == NULL)
             {
@@ -314,7 +313,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                 OFstatic_cast(DcmUnsignedLong *, elem)->putUint32Array(&temp, 1);
             // the calculation of actual group length value is contained in validateMetaInfo()
         }
-        else if (xtag == DCM_FileMetaInformationVersion)    // (0002,0001)
+        else if (tag == DCM_FileMetaInformationVersion)    // (0002,0001)
         {
             if (elem == NULL)
             {
@@ -352,7 +351,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                 DCMDATA_ERROR("DcmFileFormat: Cannot determine Version of MetaHeader");
             }
         }
-        else if (xtag == DCM_MediaStorageSOPClassUID)       // (0002,0002)
+        else if (tag == DCM_MediaStorageSOPClassUID)       // (0002,0002)
         {
             if (elem == NULL)
             {
@@ -394,7 +393,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                 }
             }
         }
-        else if (xtag == DCM_MediaStorageSOPInstanceUID)    // (0002,0003)
+        else if (tag == DCM_MediaStorageSOPInstanceUID)    // (0002,0003)
         {
             if (elem == NULL)
             {
@@ -438,7 +437,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                 }
             }
         }
-        else if (xtag == DCM_TransferSyntaxUID)             // (0002,0010)
+        else if (tag == DCM_TransferSyntaxUID)             // (0002,0010)
         {
             if (elem == NULL)
             {
@@ -460,7 +459,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                     << dcXfer.getXferName() << "] on writing following Dataset");
             }
         }
-        else if (xtag == DCM_ImplementationClassUID)        // (0002,0012)
+        else if (tag == DCM_ImplementationClassUID)        // (0002,0012)
         {
             if (elem == NULL)
             {
@@ -473,7 +472,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                 OFstatic_cast(DcmUniqueIdentifier *, elem)->putString(uid);
             }
         }
-        else if (xtag == DCM_ImplementationVersionName)     // (0002,0013)
+        else if (tag == DCM_ImplementationVersionName)     // (0002,0013)
         {
             if (elem == NULL)
             {
@@ -486,9 +485,9 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
                 OFstatic_cast(DcmShortString *, elem)->putString(uid);
             }
         }
-        else if ((xtag == DCM_SourceApplicationEntityTitle) ||  // (0002,0016)
-                 (xtag == DCM_SendingApplicationEntityTitle) || // (0002,0017)
-                 (xtag == DCM_ReceivingApplicationEntityTitle)) // (0002,0018)
+        else if ((tag == DCM_SourceApplicationEntityTitle) ||  // (0002,0016)
+                 (tag == DCM_SendingApplicationEntityTitle) || // (0002,0017)
+                 (tag == DCM_ReceivingApplicationEntityTitle)) // (0002,0018)
         {
             if (elem == NULL)
             {
@@ -497,9 +496,9 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
             }
             DCMDATA_WARN("DcmFileFormat: Don't know how to handle " << tag.getTagName());
         }
-        else if ((xtag == DCM_SourcePresentationAddress) ||  // (0002,0026)
-                 (xtag == DCM_SendingPresentationAddress) || // (0002,0027)
-                 (xtag == DCM_ReceivingPresentationAddress)) // (0002,0028)
+        else if ((tag == DCM_SourcePresentationAddress) ||  // (0002,0026)
+                 (tag == DCM_SendingPresentationAddress) || // (0002,0027)
+                 (tag == DCM_ReceivingPresentationAddress)) // (0002,0028)
         {
             if (elem == NULL)
             {
@@ -508,7 +507,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
             }
             DCMDATA_WARN("DcmFileFormat: Don't know how to handle " << tag.getTagName());
         }
-        else if (xtag == DCM_PrivateInformationCreatorUID)  // (0002,0100)
+        else if (tag == DCM_PrivateInformationCreatorUID)  // (0002,0100)
         {
             if (elem == NULL)
             {
@@ -517,7 +516,7 @@ OFCondition DcmFileFormat::checkMetaHeaderValue(DcmMetaInfo *metainfo,
             }
             DCMDATA_WARN("DcmFileFormat: Don't know how to handle PrivateInformationCreatorUID");
         }
-        else if (xtag == DCM_PrivateInformation)            // (0002,0102)
+        else if (tag == DCM_PrivateInformation)            // (0002,0102)
         {
             if (elem == NULL)
             {
@@ -637,7 +636,7 @@ E_TransferSyntax DcmFileFormat::lookForXfer(DcmMetaInfo *metainfo)
         if (metainfo->search(DCM_TransferSyntaxUID, stack).good())
         {
             DcmUniqueIdentifier *xferUI = OFstatic_cast(DcmUniqueIdentifier *, stack.top());
-            if (xferUI->getTag().getXTag() == DCM_TransferSyntaxUID)
+            if (xferUI->getTag() == DCM_TransferSyntaxUID)
             {
                 char *xferid = NULL;
                 xferUI->getString(xferid);
index 93a608a487731d4217c3fe39173e71f469231974..3960fceb4533ae90eb138bf10c9174cd30acbc43 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1209,7 +1209,7 @@ OFCondition DcmItem::readTagAndLength(DcmInputStream &inStream,
         {
             DCMDATA_WARN("DcmItem: Explicit item length (" << valueLengthItem << " bytes) too large for the elements contained in the item");
             /* if the next tag is the sequence delimiter item, we can adapt to the situation */
-            if (newTag.getXTag() == DCM_SequenceDelimitationItem)
+            if (newTag == DCM_SequenceDelimitationItem)
             {
                 DCMDATA_WARN("DcmItem: Sequence delimitation occurred before all bytes announced by explicit item length could be read");
                 l_error = EC_PrematureSequDelimitationItem;
@@ -1430,11 +1430,11 @@ OFCondition DcmItem::readUntilTag(DcmInputStream & inStream,
                         checkAndUpdateVR(*this, newTag);
 
                     /* check if we want to stop parsing at this point, in the main dataset only */
-                    if( (stopParsingAtElement != DCM_UndefinedTagKey) && (newTag.getXTag()>=stopParsingAtElement) && ident() == EVR_dataset)
+                    if ((stopParsingAtElement != DCM_UndefinedTagKey) && (newTag >= stopParsingAtElement) && (ident() == EVR_dataset))
                     {
                       lastElementComplete = OFTrue;
                       readStopElem = OFTrue;
-                      DCMDATA_WARN("DcmItem: Element " << newTag.getTagName() << " " << newTag
+                      DCMDATA_INFO("DcmItem: Element " << newTag.getTagName() << " " << newTag
                         << " encountered, skipping rest of dataset");
                     }
                     else
@@ -1481,7 +1481,7 @@ OFCondition DcmItem::readUntilTag(DcmInputStream & inStream,
                          (dcmStopParsingAfterElement.get() == elementList->get()->getTag()) &&
                           ident() == EVR_dataset)
                     {
-                        DCMDATA_WARN("DcmItem: Element " << newTag.getTagName() << " " << newTag
+                        DCMDATA_INFO("DcmItem: Element " << newTag.getTagName() << " " << newTag
                             << " encountered, skipping rest of data set");
                         readStopElem = OFTrue;
                     }
@@ -1548,6 +1548,9 @@ OFCondition DcmItem::write(DcmOutputStream &outStream,
     {
       if (getTransferState() == ERW_init)
       {
+        // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+        // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+        outStream.write(NULL, 0);
         if (outStream.avail() >= 8)
         {
           if (enctype == EET_ExplicitLength)
@@ -1565,8 +1568,9 @@ OFCondition DcmItem::write(DcmOutputStream &outStream,
           outStream.write(&valueLength, 4); // 4 bytes length
           elementList->seek(ELP_first);
           setTransferState(ERW_inWork);
-        } else
+        } else {
           errorFlag = EC_StreamNotifyClient;
+        }
       }
       if (getTransferState() == ERW_inWork)
       {
@@ -1587,6 +1591,9 @@ OFCondition DcmItem::write(DcmOutputStream &outStream,
           setTransferState(ERW_ready);
           if (getLengthField() == DCM_UndefinedLength)
           {
+            // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+            // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+            outStream.write(NULL, 0);
             if (outStream.avail() >= 8)
             {
                 // write Item delimitation
@@ -1628,6 +1635,9 @@ OFCondition DcmItem::writeSignatureFormat(DcmOutputStream &outStream,
     {
       if (getTransferState() == ERW_init)
       {
+        // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+        // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+        outStream.write(NULL, 0);
         if (outStream.avail() >= 4)
         {
           if (enctype == EET_ExplicitLength)
@@ -1803,7 +1813,7 @@ OFCondition DcmItem::insert(DcmElement *elem,
             }
             /* else if the new element's tag is greater than the current element's tag */
             /* (i.e. we have found the position where the new element shall be inserted) */
-            else if (elem->getTag() > dE->getTag())
+            else if (elem->getTag() > dE->getTag().getTagKey() /* only compare the attribute tag */)
             {
                 /* insert the new element after the current element */
                 elementList->insert(elem, ELP_next);
@@ -1831,7 +1841,7 @@ OFCondition DcmItem::insert(DcmElement *elem,
                 break;
             }
             /* else if the current element and the new element show the same tag */
-            else if (elem->getTag() == dE->getTag())
+            else if (elem->getTag() == dE->getTag().getTagKey() /* only compare the attribute tag */)
             {
                 /* if new and current element are not identical */
                 if (elem != dE)
@@ -3765,6 +3775,10 @@ OFCondition DcmItem::putAndInsertUint32Array(const DcmTag& tag,
         case EVR_UL:
             elem = new DcmUnsignedLong(tag);
             break;
+        case EVR_UNKNOWN:
+            /* Unknown VR, e.g. tag not found in data dictionary */
+            status = EC_UnknownVR;
+            break;
         default:
             status = EC_IllegalCall;
             break;
@@ -3822,6 +3836,43 @@ OFCondition DcmItem::putAndInsertSint32(const DcmTag& tag,
 }
 
 
+OFCondition DcmItem::putAndInsertSint32Array(const DcmTag& tag,
+                                             const Sint32 *value,
+                                             const unsigned long count,
+                                             const OFBool replaceOld)
+{
+    OFCondition status = EC_Normal;
+    /* create new element */
+    DcmElement *elem = NULL;
+    switch(tag.getEVR())
+    {
+        case EVR_SL:
+            elem = new DcmSignedLong(tag);
+            break;
+        case EVR_UNKNOWN:
+            /* Unknown VR, e.g. tag not found in data dictionary */
+            status = EC_UnknownVR;
+            break;
+        default:
+            status = EC_IllegalCall;
+            break;
+    }
+    if (elem != NULL)
+    {
+        /* put value */
+        status = elem->putSint32Array(value, count);
+        /* insert into dataset/item */
+        if (status.good())
+            status = insert(elem, replaceOld);
+        /* could not be inserted, therefore, delete it immediately */
+        if (status.bad())
+            delete elem;
+    } else if (status.good())
+        status = EC_MemoryExhausted;
+    return status;
+}
+
+
 OFCondition DcmItem::putAndInsertFloat32(const DcmTag& tag,
                                          const Float32 value,
                                          const unsigned long pos,
@@ -4582,7 +4633,7 @@ OFCondition DcmItem::newDicomElement(DcmElement *&newElement,
         case EVR_UL :
             {
                 // generate tag with VR from dictionary!
-                DcmTag ulupTag(tag.getXTag());
+                DcmTag ulupTag(tag.getTagKey());
                 if (ulupTag.getEVR() == EVR_up)
                     newElement = new DcmUnsignedLongOffset(ulupTag, length);
                 else
@@ -4619,11 +4670,11 @@ OFCondition DcmItem::newDicomElement(DcmElement *&newElement,
             newElement = new DcmSequenceOfItems(tag, length, readAsUN);
             break;
         case EVR_na :
-            if (tag.getXTag() == DCM_Item)
+            if (tag == DCM_Item)
                 l_error = EC_InvalidTag;
-            else if (tag.getXTag() == DCM_SequenceDelimitationItem)
+            else if (tag == DCM_SequenceDelimitationItem)
                 l_error = EC_SequEnd;
-            else if (tag.getXTag() == DCM_ItemDelimitationItem)
+            else if (tag == DCM_ItemDelimitationItem)
                 l_error = EC_ItemEnd;
             else
                 l_error = EC_InvalidTag;
@@ -4705,7 +4756,7 @@ OFCondition DcmItem::newDicomElement(DcmElement *&newElement,
             else if (tag.isPrivate())
             {
                 // look up VR in private data dictionary
-                DcmTag newTag(tag.getXTag(), tag.getPrivateCreator());
+                DcmTag newTag(tag.getTagKey(), tag.getPrivateCreator());
                 // special handling for private pixel data (compressed or uncompressed)
                 if (newTag.getEVR() == EVR_px)
                 {
index a29b52785604e2ebf2ee953a294aa1564ad0ccdb..dbbbe9309b099db8c4d0ab4f2d2952b9ed66f48b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016-2022, OFFIS e.V.
+ *  Copyright (C) 2016-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -76,11 +76,13 @@ void DcmJsonFormat::escapeControlCharacters(STD_NAMESPACE ostream &out, const OF
 void DcmJsonFormat::normalizeDecimalString(OFString &value)
 {
     // remove all plus characters that may occur in the string.
-    // These are permitted in DICOM but not in Json.
+    // These are permitted in DICOM but not in JSON.
     size_t pos;
     while (OFString_npos != (pos = value.find('+')))
       value.erase(pos,1);
 
+    // check if the first character is a minus sign.
+    // if so, remove it and set "minus" to true
     OFBool minus = OFFalse;
 
     if (value.length() > 0 && value[0] == '-')
@@ -89,20 +91,41 @@ void DcmJsonFormat::normalizeDecimalString(OFString &value)
         minus = OFTrue;
     }
 
+    // remove leading zeroes from the significand
     pos = value.find_first_not_of("0");
 
     if (pos == OFString_npos)
         value = "0";
     else
     {
+        // make sure that the significand does not start
+        // with a period, in this case, prepend a zero
         if (value[pos] == '.')
             value = '0' + value.substr(pos);
         else
             value = value.substr(pos);
     }
 
+    // add back any minus sign
     if (minus)
         value = '-' + value;
+
+    // make sure that the significand does not end
+    // with a period
+    if (OFString_npos != (pos = value.find('.')))
+    {
+      if (pos == value.length() -1)
+      {
+        // number ends with a period. Add a zero
+        value.append("0");
+      }
+      else if ((value[pos+1] < '0') || (value[pos+1] > '9'))
+      {
+        // no digit after period. Insert a zero
+        value.insert(pos+1, "0");
+      }
+    }
+
 }
 
 // Formats the number to JSON standard as IntegerString
index 0545866a73bcdfa1df4323e464a936fff705fe7e..2ab3c2ae885d04d4a6a8d5d12ec775e6937b0cb4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -296,11 +296,11 @@ OFBool DcmMetaInfo::checkAndReadPreamble(DcmInputStream &inStream,
         // check determined transfer syntax
         if ((tmpXferSyn.isExplicitVR() && xferSyn.isImplicitVR()) ||
             (tmpXferSyn.isImplicitVR() && xferSyn.isExplicitVR()) ||
-            xferSyn.getXfer() == EXS_Unknown)
+            xferSyn == EXS_Unknown)
         {
             // use determined transfer syntax
             newxfer = tmpXferSyn.getXfer();
-            if (xferSyn.getXfer() != EXS_Unknown)
+            if (xferSyn != EXS_Unknown)
                 DCMDATA_WARN("DcmMetaInfo: TransferSyntax of MetaInfo is other than expected");
         } else
             newxfer = xferSyn.getXfer();
@@ -373,7 +373,7 @@ OFCondition DcmMetaInfo::readGroupLength(DcmInputStream &inStream,
         {
             l_error = DcmItem::readSubElement(inStream, newTag, newValueLength, newxfer, glenc, maxReadLength);
             bytesRead += newValueLength;
-            if (l_error.good() && newTag.getXTag() == xtag && elementList->get() != NULL && newValueLength > 0)
+            if (l_error.good() && newTag == xtag && elementList->get() != NULL && newValueLength > 0)
             {
                 l_error = (OFstatic_cast(DcmUnsignedLong *, elementList->get()))->getUint32(headerLen);
                 DCMDATA_TRACE("DcmMetaInfo::readGroupLength() Group Length of File Meta Header = " << headerLen + bytesRead);
@@ -581,6 +581,9 @@ OFCondition DcmMetaInfo::write(
             /* set the transfer state of certain elements to indicate that they have already been written. */
             if (getTransferState() == ERW_init)
             {
+                // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+                // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+                outStream.write(NULL, 0);
                 if (preambleUsed || !elementList->empty())
                 {
                     if (fPreambleTransferState == ERW_init)
index 3d13ad0970b0d30d9c9d2ae5e4b9023fc66833ee..75e13525216026eb98db2c9a515ecaa8b481a3d5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2017, OFFIS e.V.
+ *  Copyright (C) 2002-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -62,7 +62,7 @@ offile_off_t DcmBufferConsumer::avail() const
 offile_off_t DcmBufferConsumer::write(const void *buf, offile_off_t buflen)
 {
   offile_off_t result = 0;
-  if (status_.good() && buf && buflen)
+  if (buflen && buf && status_.good())
   {
     result = bufSize_ - filled_;
     if (result > buflen) result = buflen;
index 5c71bbddc85ccb86f74ab4ba643150eb92d0c73d..4bcd697865ea596ec11c49c591762ca9f71f82bd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2021, OFFIS e.V.
+ *  Copyright (C) 2002-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -37,7 +37,8 @@ END_EXTERN_C
 
 DcmFileConsumer::DcmFileConsumer(const OFFilename &filename)
 : DcmConsumer()
-, file_()
+, file_container_()
+, file_(file_container_)
 , status_(EC_Normal)
 {
   if (!file_.fopen(filename, "wb"))
@@ -49,6 +50,15 @@ DcmFileConsumer::DcmFileConsumer(const OFFilename &filename)
 
 DcmFileConsumer::DcmFileConsumer(FILE *file)
 : DcmConsumer()
+, file_container_(file)
+, file_(file_container_)
+, status_(EC_Normal)
+{
+}
+
+DcmFileConsumer::DcmFileConsumer(OFFile &file)
+: DcmConsumer()
+, file_container_()
 , file_(file)
 , status_(EC_Normal)
 {
@@ -84,7 +94,7 @@ offile_off_t DcmFileConsumer::avail() const
 offile_off_t DcmFileConsumer::write(const void *buf, offile_off_t buflen)
 {
   offile_off_t result = 0;
-  if (status_.good() && file_.open() && buf && buflen)
+  if (buflen && buf && status_.good() && file_.open())
   {
 #ifdef WRITE_VERY_LARGE_CHUNKS
     /* This is the old behaviour prior to DCMTK 3.5.5 */
@@ -138,6 +148,12 @@ DcmOutputFileStream::DcmOutputFileStream(FILE *file)
 {
 }
 
+DcmOutputFileStream::DcmOutputFileStream(OFFile& file)
+: DcmOutputStream(&consumer_) // safe because DcmOutputStream only stores pointer
+, consumer_(file)
+{
+}
+
 DcmOutputFileStream::~DcmOutputFileStream()
 {
   // last attempt to flush stream before file is closed
index cee83b397292a40c0b779ecff91c9605e0e4ec06..4234c1369380be59bd1efce36327ecc9117fb8aa 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2021, OFFIS e.V.
+ *  Copyright (C) 2002-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -82,7 +82,9 @@ offile_off_t DcmStdoutConsumer::avail() const
 
 offile_off_t DcmStdoutConsumer::write(const void *buf, offile_off_t buflen)
 {
-  return OFstatic_cast(offile_off_t, fwrite(buf, 1, OFstatic_cast(size_t, buflen), stdout));
+  if (buflen && buf)
+    return OFstatic_cast(offile_off_t, fwrite(buf, 1, OFstatic_cast(size_t, buflen), stdout));
+    else return 0;
 }
 
 void DcmStdoutConsumer::flush()
index 213a04d5f7d4ea8ac6d2eb12f4dcce8e30ac9f59..c5a81180d6f1c024a9c8120523a5e2210a2fd999 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2021, OFFIS e.V.
+ *  Copyright (C) 2008-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -650,7 +650,7 @@ OFCondition DcmPathProcessor::findOrCreateItemPath(DcmItem* item, OFString& path
                     // check private reservation if desired
                     if (m_checkPrivateReservations)
                     {
-                        status = checkPrivateTagReservation(item, tag.getXTag());
+                        status = checkPrivateTagReservation(item, tag.getTagKey());
                         if (status.bad())
                             return status;
                     }
@@ -942,11 +942,11 @@ DcmPathProcessor::checkPrivateTagReservation(DcmItem* item, const DcmTagKey& tag
         // check whether private creator is correct
         if (actualPrivateCreator != privateCreator)
         {
-            OFString msg = "Private creator string (";
+            OFString msg = "Private creator identifier (";
             msg += actualPrivateCreator;
             msg += ") other than expected ( ";
             msg += privateCreator;
-            msg += privateCreator;
+            msg += ")";
             return makeOFCondition(OFM_dcmdata, 25, OF_error, msg.c_str());
         }
     }
index 918bf56b459a668e67accfb3ca9264d0b91ec86d..2ce02eabcb3022916ba89c1192d9cc88f68d2a8a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2010, OFFIS e.V.
+ *  Copyright (C) 2002-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  *    D-26121 Oldenburg, Germany
  *
  *
- *  Module:  ofstd
+ *  Module:  dcmdata
  *
  *  Author:  Marco Eichelberg
  *
- *  Purpose: general purpose 32-bit CRC in C++
- *           Code is based on the CRC32 implementation (C)1986 Gary S. Brown
+ *  Purpose: class DcmPrivateTagCache
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 #include "dcmtk/dcmdata/dcpcache.h"
-#include "dcmtk/dcmdata/dcelem.h"      /* for DcmElement, DcmObject */
+#include "dcmtk/dcmdata/dcelem.h"     /* for DcmElement, DcmObject */
 
 DcmPrivateTagCacheEntry::DcmPrivateTagCacheEntry(const DcmTagKey& tk, const char *pc)
 : tagKey(tk)
index 7d1e61550cb2b85db3d72d58955b65063e2481dc..b5c682fb688893b1678df06fa3c7a02f6495104e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2020, OFFIS e.V.
+ *  Copyright (C) 1997-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1189,7 +1189,7 @@ OFCondition DcmPixelData::getUncompressedFrame(
     if (numberOfFrames < 1) numberOfFrames = 1;
 
     Uint32 frameSize;
-    OFCondition result = getUncompressedFrameSize(dataset, frameSize);
+    OFCondition result = getUncompressedFrameSize(dataset, frameSize, existUnencapsulated);
     if (result.bad()) return result;
 
     // determine the minimum buffer size, which may be frame size plus one pad byte if frame size is odd.
@@ -1345,6 +1345,10 @@ OFCondition DcmPixelData::writeJson(STD_NAMESPACE ostream &out,
       return EC_Normal;
     }
 
+    /* write JSON Opener and Closer, because otherwise the output is not valid JSON */
+    writeJsonOpener(out, format);
+    writeJsonCloser(out, format);
+
     // pixel data is encapsulated, return error
     return EC_CannotWriteJsonInlineBinary;
 }
index b439569b12a5505085e727d41faafbf28ab76b15..1af63add22e33f550837f83cb6edfa80c0109ddf 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -206,11 +206,11 @@ OFCondition DcmPixelSequence::makeSubObject(DcmObject *&subObject,
     switch (newTag.getEVR())
     {
         case EVR_na:
-            if (newTag.getXTag() == DCM_Item)
+            if (newTag == DCM_Item)
                 newObject = new DcmPixelItem(newTag, newLength);
-            else if (newTag.getXTag() == DCM_SequenceDelimitationItem)
+            else if (newTag == DCM_SequenceDelimitationItem)
                 l_error = EC_SequEnd;
-            else if (newTag.getXTag() == DCM_ItemDelimitationItem)
+            else if (newTag == DCM_ItemDelimitationItem)
                 l_error = EC_ItemEnd;
             else
                 l_error = EC_InvalidTag;
index 8b4d8998ea1109c4a2676972ba45dacc18958442..d15eb17e33d93b4e1eb1235c8e98459f97bcea3e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -369,6 +369,10 @@ OFCondition DcmPixelItem::writeSignatureFormat(
               /* write tag and length information to it, do something */
               if (getTransferState() == ERW_init)
               {
+                  // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+                  // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+                  outStream.write(NULL, 0);
+
                   /* first compare with DCM_TagInfoLength (12). If there is not enough space
                    * in the buffer, check if the buffer is still sufficient for the requirements
                    * of this element, which may need only 8 instead of 12 bytes.
index 18db9f793f6eab411de8e89db7054aa43555a200..adeb64539f583b7f23c3e6e291666df89bf9586d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -549,16 +549,16 @@ OFCondition DcmSequenceOfItems::makeSubObject(DcmObject *&subObject,
     switch (newTag.getEVR())
     {
         case EVR_na:
-            if (newTag.getXTag() == DCM_Item)
+            if (newTag == DCM_Item)
             {
-                if (getTag().getXTag() == DCM_DirectoryRecordSequence)
+                if (getTag() == DCM_DirectoryRecordSequence)
                     subItem = new DcmDirectoryRecord(newTag, newLength);
                 else
                     subItem = new DcmItem(newTag, newLength);
             }
-            else if (newTag.getXTag() == DCM_SequenceDelimitationItem)
+            else if (newTag == DCM_SequenceDelimitationItem)
                 l_error = EC_SequEnd;
-            else if (newTag.getXTag() == DCM_ItemDelimitationItem)
+            else if (newTag == DCM_ItemDelimitationItem)
                 l_error = EC_ItemEnd;
             else
                 l_error = EC_InvalidTag;
@@ -796,6 +796,10 @@ OFCondition DcmSequenceOfItems::write(DcmOutputStream &outStream,
         {
             if (getTransferState() == ERW_init)
             {
+                // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+                // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+                outStream.write(NULL, 0);
+
                 /* first compare with DCM_TagInfoLength (12). If there is not enough space
                  * in the buffer, check if the buffer is still sufficient for the requirements
                  * of this element, which may need only 8 instead of 12 bytes.
@@ -838,6 +842,9 @@ OFCondition DcmSequenceOfItems::write(DcmOutputStream &outStream,
                     setTransferState(ERW_ready);
                     if (getLengthField() == DCM_UndefinedLength)
                     {
+                        // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+                        // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+                        outStream.write(NULL, 0);
                         if (outStream.avail() >= 8)
                         {
                             // write sequence delimitation item
@@ -920,6 +927,10 @@ OFCondition DcmSequenceOfItems::writeSignatureFormat(DcmOutputStream &outStream,
         {
             if (getTransferState() == ERW_init)
             {
+                // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+                // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+                outStream.write(NULL, 0);
+
                 /* first compare with DCM_TagInfoLength (12). If there is not enough space
                  * in the buffer, check if the buffer is still sufficient for the requirements
                  * of this element, which may need only 8 instead of 12 bytes.
@@ -957,6 +968,11 @@ OFCondition DcmSequenceOfItems::writeSignatureFormat(DcmOutputStream &outStream,
                 if (errorFlag.good())
                 {
                     setTransferState(ERW_ready);
+
+                    // Force a compression filter (if any) to process the input buffer, by calling outStream.write().
+                    // This ensures that we cannot get stuck if there are just a few bytes available in the buffer
+                    outStream.write(NULL, 0);
+
                     /* we always write a sequence delimitation item tag, but no length */
                     if (outStream.avail() >= 4)
                     {
index 00010030ac8f765794a68fe35acbd32508ec6b95..9166d51d8bad37faa0c0e192822cd3b9a25a8ac5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2021, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -34,6 +34,7 @@ DcmTag::DcmTag()
 {
 }
 
+
 DcmTag::DcmTag(const DcmTagKey& akey, const char *privCreator)
   : DcmTagKey(akey),
     vr(EVR_UNKNOWN),
@@ -46,6 +47,7 @@ DcmTag::DcmTag(const DcmTagKey& akey, const char *privCreator)
     lookupVRinDictionary();
 }
 
+
 DcmTag::DcmTag(Uint16 g, Uint16 e, const char *privCreator)
   : DcmTagKey(g, e),
     vr(EVR_UNKNOWN),
@@ -58,6 +60,7 @@ DcmTag::DcmTag(Uint16 g, Uint16 e, const char *privCreator)
     lookupVRinDictionary();
 }
 
+
 DcmTag::DcmTag(const DcmTagKey& akey, const DcmVR& avr)
   : DcmTagKey(akey),
     vr(avr),
@@ -67,6 +70,7 @@ DcmTag::DcmTag(const DcmTagKey& akey, const DcmVR& avr)
 {
 }
 
+
 DcmTag::DcmTag(Uint16 g, Uint16 e, const DcmVR& avr)
   : DcmTagKey(g, e),
     vr(avr),
@@ -76,6 +80,7 @@ DcmTag::DcmTag(Uint16 g, Uint16 e, const DcmVR& avr)
 {
 }
 
+
 DcmTag::DcmTag(const DcmTag& tag)
   : DcmTagKey(tag),
     vr(tag.vr),
@@ -88,6 +93,18 @@ DcmTag::DcmTag(const DcmTag& tag)
 }
 
 
+DcmTag::DcmTag(const DcmTag& tag, const DcmVR& avr)
+  : DcmTagKey(tag),
+    vr(avr),
+    tagName(NULL),
+    privateCreator(NULL),
+    errorFlag(tag.errorFlag)
+{
+    updateTagName(tag.tagName);
+    updatePrivateCreator(tag.privateCreator);
+}
+
+
 // ********************************
 
 
@@ -114,8 +131,43 @@ DcmTag& DcmTag::operator=(const DcmTag& tag)
     return *this;
 }
 
+
 // ********************************
 
+
+OFBool DcmTag::operator==(const DcmTag& tag) const
+{
+    OFBool result = DcmTagKey::operator==(tag);
+    if (result)
+    {
+         // check whether private creator identifiers are identical
+        if ((privateCreator != NULL) && (tag.getPrivateCreator() != NULL))
+            result = (strcmp(privateCreator, tag.getPrivateCreator()) == 0);
+        else if (privateCreator != tag.getPrivateCreator())
+            result = OFFalse;
+    }
+    return result;
+}
+
+
+OFBool DcmTag::operator!=(const DcmTag& tag) const
+{
+    OFBool result = DcmTagKey::operator!=(tag);
+    if (!result)
+    {
+         // check whether private creator identifiers are different
+        if ((privateCreator != NULL) && (tag.getPrivateCreator() != NULL))
+            result = (strcmp(privateCreator, tag.getPrivateCreator()) != 0);
+        else if (privateCreator != tag.getPrivateCreator())
+            result = OFTrue;
+    }
+    return result;
+}
+
+
+// ********************************
+
+
 void DcmTag::lookupVRinDictionary()
 {
     const DcmDataDictionary& globalDataDict = dcmDataDict.rdlock();
@@ -128,6 +180,7 @@ void DcmTag::lookupVRinDictionary()
     dcmDataDict.rdunlock();
 }
 
+
 // ********************************
 
 
@@ -165,6 +218,7 @@ const char *DcmTag::getTagName()
     return DcmTag_ERROR_TagName;
 }
 
+
 OFBool DcmTag::isSignable() const
 {
     OFBool result = isSignableTag();
@@ -173,6 +227,7 @@ OFBool DcmTag::isSignable() const
     return result;
 }
 
+
 OFBool DcmTag::isUnknownVR() const
 {
     OFBool result = OFFalse;
@@ -230,15 +285,16 @@ const char* DcmTag::getPrivateCreator() const
     return privateCreator;
 }
 
+
 void DcmTag::setPrivateCreator(const char *privCreator)
 {
-    // a new private creator code probably changes the name
-    // of the tag. Enforce new dictionary lookup the next time
-    // getTagName() is called.
+    // a new private creator identifier probably changes the name of the tag.
+    // Enforce new dictionary lookup the next time getTagName() is called.
     updateTagName(NULL);
     updatePrivateCreator(privCreator);
 }
 
+
 void DcmTag::updateTagName(const char *c)
 {
     delete[] tagName;
@@ -252,6 +308,7 @@ void DcmTag::updateTagName(const char *c)
         tagName = NULL;
 }
 
+
 void DcmTag::updatePrivateCreator(const char *c)
 {
     delete[] privateCreator;
index b63501e3367317c1df4827762414bac95711445f..a95eb61914f64c4d682dabcce5e3d22cf5e382bf 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -126,19 +126,26 @@ static const UIDNameMap uidNameMap[] = {
     { UID_JPIPReferencedTransferSyntax,                                          "JPIPReferenced",                                                     "JPIPReferenced" },
     { UID_JPIPReferencedDeflateTransferSyntax,                                   "JPIPReferencedDeflate",                                              "JPIPReferencedDeflate" },
     { UID_MPEG2MainProfileAtMainLevelTransferSyntax,                             "MPEG2MPML",                                                          "MPEG2MainProfile@MainLevel" },
+    { UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax,                   "MPEG2MPMLF",                                                         "FragmentableMPEG2MainProfile/MainLevel" },
     { UID_MPEG2MainProfileAtHighLevelTransferSyntax,                             "MPEG2MPHL",                                                          "MPEG2MainProfile@HighLevel" },
+    { UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax,                   "MPEG2MPHLF",                                                         "FragmentableMPEG2MainProfile/HighLevel" },
     { UID_MPEG4HighProfileLevel4_1TransferSyntax,                                "MPEG4HP41",                                                          "MPEG4HighProfile/Level4.1" },
+    { UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax,                    "MPEG4HP41F",                                                         "FragmentableMPEG4HighProfile/Level4.1" },
     { UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,                    "MPEG4HP41BD",                                                        "MPEG4BDcompatibleHighProfile/Level4.1" },
+    { UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,        "MPEG4HP41BDF",                                                       "FragmentableMPEG4BDcompatibleHighProfile/Level4.1" },
     { UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,                     "MPEG4HP422D",                                                        "MPEG4HighProfile/Level4.2For2DVideo" },
+    { UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,         "MPEG4HP422DF",                                                       "FragmentableMPEG4HighProfile/Level4.2For2DVideo" },
     { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,                     "MPEG4HP423D",                                                        "MPEG4HighProfile/Level4.2For3DVideo" },
+    { UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,         "MPEG4HP423DF",                                                       "FragmentableMPEG4HighProfile/Level4.2For3DVideo" },
     { UID_MPEG4StereoHighProfileLevel4_2TransferSyntax,                          "MPEG4HP42STEREO",                                                    "MPEG4StereoHighProfile/Level4.2" },
+    { UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax,              "MPEG4HP42STEREOF",                                                   "FragmentableMPEG4StereoHighProfile/Level4.2" },
     { UID_HEVCMainProfileLevel5_1TransferSyntax,                                 "HEVCMP51",                                                           "HEVCMainProfile/Level5.1" },
     { UID_HEVCMain10ProfileLevel5_1TransferSyntax,                               "HEVCM10P51",                                                         "HEVCMain10Profile/Level5.1" },
     { UID_SMPTEST2110_20_UncompressedProgressiveActiveVideoTransferSyntax,       "SMPTEST211020UncompressedProgressiveActiveVideo",                    "SMPTEST2110-20:UncompressedProgressiveActiveVideo" },
     { UID_SMPTEST2110_20_UncompressedInterlacedActiveVideoTransferSyntax,        "SMPTEST211020UncompressedInterlacedActiveVideo",                     "SMPTEST2110-20:UncompressedInterlacedActiveVideo" },
     { UID_SMPTEST2110_30_PCMDigitalAudioTransferSyntax,                          "SMPTEST211030PCMDigitalAudio",                                       "SMPTEST2110-30:PCMDigitalAudio" },
-    { UID_RFC2557MIMEEncapsulationTransferSyntax,                                "RFC2557MIMEEncapsulation",                                           "RFC2557MIMEEncapsulation" },
-    { UID_XMLEncodingTransferSyntax,                                             "XMLEncoding",                                                        "XMLEncoding" },
+    { UID_RETIRED_RFC2557MIMEEncapsulationTransferSyntax,                        "RFC2557MIMEEncapsulation",                                           "RETIRED_RFC2557MIMEEncapsulation" },
+    { UID_RETIRED_XMLEncodingTransferSyntax,                                     "XMLEncoding",                                                        "RETIRED_XMLEncoding" },
     { UID_PrivateGE_LEI_WithBigEndianPixelDataTransferSyntax,                    NULL /* no official keyword */,                                       "PrivateGELittleEndianImplicitWithBigEndianPixelData" },
 
     // Storage (DICOM)
@@ -160,7 +167,6 @@ static const UIDNameMap uidNameMap[] = {
     { UID_CArmPhotonElectronRadiationStorage,                                    "CArmPhotonElectronRadiationStorage",                                 "CArmPhotonElectronRadiationStorage" },
     { UID_ChestCADSRStorage,                                                     "ChestCADSRStorage",                                                  "ChestCADSRStorage" },
     { UID_ColonCADSRStorage,                                                     "ColonCADSRStorage",                                                  "ColonCADSRStorage" },
-    { UID_ColorPaletteStorage,                                                   "ColorPaletteStorage",                                                "ColorPaletteStorage" },
     { UID_ColorSoftcopyPresentationStateStorage,                                 "ColorSoftcopyPresentationStateStorage",                              "ColorSoftcopyPresentationStateStorage" },
     { UID_CompositingPlanarMPRVolumetricPresentationStateStorage,                "CompositingPlanarMPRVolumetricPresentationStateStorage",             "CompositingPlanarMPRVolumetricPresentationStateStorage" },
     { UID_Comprehensive3DSRStorage,                                              "Comprehensive3DSRStorage",                                           "Comprehensive3DSRStorage" },
@@ -186,28 +192,27 @@ static const UIDNameMap uidNameMap[] = {
     { UID_EncapsulatedOBJStorage,                                                "EncapsulatedOBJStorage",                                             "EncapsulatedOBJStorage" },
     { UID_EncapsulatedPDFStorage,                                                "EncapsulatedPDFStorage",                                             "EncapsulatedPDFStorage" },
     { UID_EncapsulatedSTLStorage,                                                "EncapsulatedSTLStorage",                                             "EncapsulatedSTLStorage" },
+    { UID_EnhancedContinuousRTImageStorage,                                      "EnhancedContinuousRTImageStorage",                                   "EnhancedContinuousRTImageStorage" },
     { UID_EnhancedCTImageStorage,                                                "EnhancedCTImageStorage",                                             "EnhancedCTImageStorage" },
     { UID_EnhancedMRColorImageStorage,                                           "EnhancedMRColorImageStorage",                                        "EnhancedMRColorImageStorage" },
     { UID_EnhancedMRImageStorage,                                                "EnhancedMRImageStorage",                                             "EnhancedMRImageStorage" },
     { UID_EnhancedPETImageStorage,                                               "EnhancedPETImageStorage",                                            "EnhancedPETImageStorage" },
+    { UID_EnhancedRTImageStorage,                                                "EnhancedRTImageStorage",                                             "EnhancedRTImageStorage" },
     { UID_EnhancedSRStorage,                                                     "EnhancedSRStorage",                                                  "EnhancedSRStorage" },
     { UID_EnhancedUSVolumeStorage,                                               "EnhancedUSVolumeStorage",                                            "EnhancedUSVolumeStorage" },
     { UID_EnhancedXAImageStorage,                                                "EnhancedXAImageStorage",                                             "EnhancedXAImageStorage" },
     { UID_EnhancedXRayRadiationDoseSRStorage,                                    "EnhancedXRayRadiationDoseSRStorage",                                 "EnhancedXRayRadiationDoseSRStorage" },
     { UID_EnhancedXRFImageStorage,                                               "EnhancedXRFImageStorage",                                            "EnhancedXRFImageStorage" },
     { UID_ExtensibleSRStorage,                                                   "ExtensibleSRStorage",                                                "ExtensibleSRStorage" },
+    { UID_General32BitECGWaveformStorage,                                        "General32bitECGWaveformStorage",                                     "General32BitECGWaveformStorage" },
     { UID_GeneralAudioWaveformStorage,                                           "GeneralAudioWaveformStorage",                                        "GeneralAudioWaveformStorage" },
     { UID_GeneralECGWaveformStorage,                                             "GeneralECGWaveformStorage",                                          "GeneralECGWaveformStorage" },
-    { UID_GenericImplantTemplateStorage,                                         "GenericImplantTemplateStorage",                                      "GenericImplantTemplateStorage" },
     { UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,                  "GrayscalePlanarMPRVolumetricPresentationStateStorage",               "GrayscalePlanarMPRVolumetricPresentationStateStorage" },
     { UID_GrayscaleSoftcopyPresentationStateStorage,                             "GrayscaleSoftcopyPresentationStateStorage",                          "GrayscaleSoftcopyPresentationStateStorage" },
-    { UID_HangingProtocolStorage,                                                "HangingProtocolStorage",                                             "HangingProtocolStorage" },
     { UID_HemodynamicWaveformStorage,                                            "HemodynamicWaveformStorage",                                         "HemodynamicWaveformStorage" },
-    { UID_ImplantAssemblyTemplateStorage,                                        "ImplantAssemblyTemplateStorage",                                     "ImplantAssemblyTemplateStorage" },
     { UID_ImplantationPlanSRStorage,                                             "ImplantationPlanSRStorage",                                          "ImplantationPlanSRStorage" },
     // the following line is needed for reasons of backward compatibility (name of SOP Class changed, see the previous line)
     { UID_ImplantationPlanSRStorage,                                             NULL /* see above */,                                                 "ImplantationPlanSRDocumentStorage" },
-    { UID_ImplantTemplateGroupStorage,                                           "ImplantTemplateGroupStorage",                                        "ImplantTemplateGroupStorage" },
     { UID_IntraocularLensCalculationsStorage,                                    "IntraocularLensCalculationsStorage",                                 "IntraocularLensCalculationsStorage" },
     { UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation,    "IntravascularOpticalCoherenceTomographyImageStorageForPresentation", "IntravascularOpticalCoherenceTomographyImageStorageForPresentation" },
     { UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing,      "IntravascularOpticalCoherenceTomographyImageStorageForProcessing",   "IntravascularOpticalCoherenceTomographyImageStorageForProcessing" },
@@ -241,6 +246,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_ParametricMapStorage,                                                  "ParametricMapStorage",                                               "ParametricMapStorage" },
     { UID_PatientRadiationDoseSRStorage,                                         "PatientRadiationDoseSRStorage",                                      "PatientRadiationDoseSRStorage" },
     { UID_PerformedImagingAgentAdministrationSRStorage,                          "PerformedImagingAgentAdministrationSRStorage",                       "PerformedImagingAgentAdministrationSRStorage" },
+    { UID_PhotoacousticImageStorage,                                             "PhotoacousticImageStorage",                                          "PhotoacousticImageStorage" },
     { UID_PlannedImagingAgentAdministrationSRStorage,                            "PlannedImagingAgentAdministrationSRStorage",                         "PlannedImagingAgentAdministrationSRStorage" },
     { UID_PositronEmissionTomographyImageStorage,                                "PositronEmissionTomographyImageStorage",                             "PositronEmissionTomographyImageStorage" },
     { UID_ProcedureLogStorage,                                                   "ProcedureLogStorage",                                                "ProcedureLogStorage" },
@@ -261,6 +267,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_RTImageStorage,                                                        "RTImageStorage",                                                     "RTImageStorage" },
     { UID_RTIonBeamsTreatmentRecordStorage,                                      "RTIonBeamsTreatmentRecordStorage",                                   "RTIonBeamsTreatmentRecordStorage" },
     { UID_RTIonPlanStorage,                                                      "RTIonPlanStorage",                                                   "RTIonPlanStorage" },
+    { UID_RTPatientPositionAcquisitionInstructionStorage,                        "RTPatientPositionAcquisitionInstructionStorage",                     "RTPatientPositionAcquisitionInstructionStorage" },
     { UID_RTPhysicianIntentStorage,                                              "RTPhysicianIntentStorage",                                           "RTPhysicianIntentStorage" },
     { UID_RTPlanStorage,                                                         "RTPlanStorage",                                                      "RTPlanStorage" },
     { UID_RTRadiationRecordSetStorage,                                           "RTRadiationRecordSetStorage",                                        "RTRadiationRecordSetStorage" },
@@ -290,6 +297,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_TwelveLeadECGWaveformStorage,                                          "TwelveLeadECGWaveformStorage",                                       "TwelveLeadECGWaveformStorage" },
     { UID_UltrasoundImageStorage,                                                "UltrasoundImageStorage",                                             "UltrasoundImageStorage" },
     { UID_UltrasoundMultiframeImageStorage,                                      "UltrasoundMultiFrameImageStorage",                                   "UltrasoundMultiframeImageStorage" },
+    { UID_VariableModalityLUTSoftcopyPresentationStateStorage,                   "VariableModalityLUTSoftcopyPresentationStateStorage",                "VariableModalityLUTSoftcopyPresentationStateStorage" },
     { UID_VideoEndoscopicImageStorage,                                           "VideoEndoscopicImageStorage",                                        "VideoEndoscopicImageStorage" },
     { UID_VideoMicroscopicImageStorage,                                          "VideoMicroscopicImageStorage",                                       "VideoMicroscopicImageStorage" },
     { UID_VideoPhotographicImageStorage,                                         "VideoPhotographicImageStorage",                                      "VideoPhotographicImageStorage" },
@@ -385,7 +393,8 @@ static const UIDNameMap uidNameMap[] = {
     { UID_StorageCommitmentPushModelSOPClass,                                    "StorageCommitmentPushModel",                                         "StorageCommitmentPushModelSOPClass" },
     { UID_StorageCommitmentPushModelSOPInstance,                                 "StorageCommitmentPushModelInstance",                                 "StorageCommitmentPushModelSOPInstance" },
 
-    // Hanging Protocols
+    // Hanging Protocol Storage and Query/Retrieve
+    { UID_HangingProtocolStorage,                                                "HangingProtocolStorage",                                             "HangingProtocolStorage" },
     { UID_FINDHangingProtocolInformationModel,                                   "HangingProtocolInformationModelFind",                                "FINDHangingProtocolInformationModel" },
     { UID_MOVEHangingProtocolInformationModel,                                   "HangingProtocolInformationModelMove",                                "MOVEHangingProtocolInformationModel" },
     { UID_GETHangingProtocolInformationModel,                                    "HangingProtocolInformationModelGet",                                 "GETHangingProtocolInformationModel" },
@@ -395,18 +404,22 @@ static const UIDNameMap uidNameMap[] = {
     { UID_CardiacRelevantPatientInformationQuery,                                "CardiacRelevantPatientInformationQuery",                             "CardiacRelevantPatientInformationQuery" },
     { UID_GeneralRelevantPatientInformationQuery,                                "GeneralRelevantPatientInformationQuery",                             "GeneralRelevantPatientInformationQuery" },
 
-    // Color Palette Query/Retrieve
+    // Color Palette Storage and Query/Retrieve
+    { UID_ColorPaletteStorage,                                                   "ColorPaletteStorage",                                                "ColorPaletteStorage" },
     { UID_FINDColorPaletteInformationModel,                                      "ColorPaletteQueryRetrieveInformationModelFind",                      "FINDColorPaletteInformationModel" },
     { UID_MOVEColorPaletteInformationModel,                                      "ColorPaletteQueryRetrieveInformationModelMove",                      "MOVEColorPaletteInformationModel" },
     { UID_GETColorPaletteInformationModel,                                       "ColorPaletteQueryRetrieveInformationModelGet",                       "GETColorPaletteInformationModel" },
 
-    // Implant Template Query/Retrieve
+    // Implant Template Storage and Query/Retrieve
+    { UID_GenericImplantTemplateStorage,                                         "GenericImplantTemplateStorage",                                      "GenericImplantTemplateStorage" },
     { UID_FINDGenericImplantTemplateInformationModel,                            "GenericImplantTemplateInformationModelFind",                         "FINDGenericImplantTemplateInformationModel" },
     { UID_MOVEGenericImplantTemplateInformationModel,                            "GenericImplantTemplateInformationModelMove",                         "MOVEGenericImplantTemplateInformationModel" },
     { UID_GETGenericImplantTemplateInformationModel,                             "GenericImplantTemplateInformationModelGet",                          "GETGenericImplantTemplateInformationModel" },
+    { UID_ImplantAssemblyTemplateStorage,                                        "ImplantAssemblyTemplateStorage",                                     "ImplantAssemblyTemplateStorage" },
     { UID_FINDImplantAssemblyTemplateInformationModel,                           "ImplantAssemblyTemplateInformationModelFind",                        "FINDImplantAssemblyTemplateInformationModel" },
     { UID_MOVEImplantAssemblyTemplateInformationModel,                           "ImplantAssemblyTemplateInformationModelMove",                        "MOVEImplantAssemblyTemplateInformationModel" },
     { UID_GETImplantAssemblyTemplateInformationModel,                            "ImplantAssemblyTemplateInformationModelGet",                         "GETImplantAssemblyTemplateInformationModel" },
+    { UID_ImplantTemplateGroupStorage,                                           "ImplantTemplateGroupStorage",                                        "ImplantTemplateGroupStorage" },
     { UID_FINDImplantTemplateGroupInformationModel,                              "ImplantTemplateGroupInformationModelFind",                           "FINDImplantTemplateGroupInformationModel" },
     { UID_MOVEImplantTemplateGroupInformationModel,                              "ImplantTemplateGroupInformationModelMove",                           "MOVEImplantTemplateGroupInformationModel" },
     { UID_GETImplantTemplateGroupInformationModel,                               "ImplantTemplateGroupInformationModelGet",                            "GETImplantTemplateGroupInformationModel" },
@@ -421,6 +434,15 @@ static const UIDNameMap uidNameMap[] = {
     { UID_MOVEProtocolApprovalInformationModel,                                  "ProtocolApprovalInformationModelMove",                               "MOVEProtocolApprovalInformationModel" },
     { UID_GETProtocolApprovalInformationModel,                                   "ProtocolApprovalInformationModelGet",                                "GETProtocolApprovalInformationModel" },
 
+    // Inventory Storage, Query/Retrieve, and related Services
+    { UID_InventoryStorage,                                                      "InventoryStorage",                                                   "InventoryStorage" },
+    { UID_FINDInventory,                                                         "InventoryFind",                                                      "FINDInventory" },
+    { UID_MOVEInventory,                                                         "InventoryMove",                                                      "MOVEInventory" },
+    { UID_GETInventory,                                                          "InventoryGet",                                                       "GETInventory" },
+    { UID_InventoryCreation,                                                     "InventoryCreation",                                                  "InventoryCreation" },
+    { UID_RepositoryQuery,                                                       "RepositoryQuery",                                                    "RepositoryQuery" },
+    { UID_StorageManagementSOPInstance,                                          "StorageManagementInstance",                                          "StorageManagementSOPInstance" },
+
     // Print
     { UID_BasicAnnotationBoxSOPClass,                                            "BasicAnnotationBox",                                                 "BasicAnnotationBoxSOPClass" },
     { UID_BasicColorImageBoxSOPClass,                                            "BasicColorImageBox",                                                 "BasicColorImageBoxSOPClass" },
@@ -659,16 +681,19 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_EncapsulatedOBJStorage,
     UID_EncapsulatedPDFStorage,
     UID_EncapsulatedSTLStorage,
+    UID_EnhancedContinuousRTImageStorage,
     UID_EnhancedCTImageStorage,
     UID_EnhancedMRColorImageStorage,
     UID_EnhancedMRImageStorage,
     UID_EnhancedPETImageStorage,
+    UID_EnhancedRTImageStorage,
     UID_EnhancedSRStorage,
     UID_EnhancedUSVolumeStorage,
     UID_EnhancedXAImageStorage,
     UID_EnhancedXRayRadiationDoseSRStorage,
     UID_EnhancedXRFImageStorage,
     UID_ExtensibleSRStorage,
+    UID_General32BitECGWaveformStorage,
     UID_GeneralAudioWaveformStorage,
     UID_GeneralECGWaveformStorage,
     UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,
@@ -708,6 +733,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_PatientRadiationDoseSRStorage,
     UID_PerformedImagingAgentAdministrationSRStorage,
     UID_PlannedImagingAgentAdministrationSRStorage,
+    UID_PhotoacousticImageStorage,
     UID_PositronEmissionTomographyImageStorage,
     UID_ProcedureLogStorage,
     UID_PseudoColorSoftcopyPresentationStateStorage,
@@ -726,6 +752,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_RTImageStorage,
     UID_RTIonBeamsTreatmentRecordStorage,
     UID_RTIonPlanStorage,
+    UID_RTPatientPositionAcquisitionInstructionStorage,
     UID_RTPhysicianIntentStorage,
     UID_RTPlanStorage,
     UID_RTRadiationRecordSetStorage,
@@ -755,6 +782,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_TwelveLeadECGWaveformStorage,
     UID_UltrasoundImageStorage,
     UID_UltrasoundMultiframeImageStorage,
+    UID_VariableModalityLUTSoftcopyPresentationStateStorage,
     UID_VideoEndoscopicImageStorage,
     UID_VideoMicroscopicImageStorage,
     UID_VideoPhotographicImageStorage,
@@ -827,6 +855,7 @@ const char* dcmNonPatientStorageSOPClassUIDs[] = {
     UID_HangingProtocolStorage,
     UID_ImplantAssemblyTemplateStorage,
     UID_ImplantTemplateGroupStorage,
+    UID_InventoryStorage,
     UID_ProtocolApprovalStorage,
     UID_XADefinedProcedureProtocolStorage,
     // end marker (important!)
@@ -966,8 +995,11 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
 //  UID_EncapsulatedMTLStorage,
 //  UID_EncapsulatedOBJStorage,
 //  UID_EncapsulatedSTLStorage,
+//  UID_EnhancedContinuousRTImageStorage,
+//  UID_EnhancedRTImageStorage,
 //  UID_EnhancedXRayRadiationDoseSRStorage,
 //  UID_ExtensibleSRStorage,
+//  UID_General32BitECGWaveformStorage,
 //  UID_GrayscalePlanarMPRVolumetricPresentationStateStorage,
 //  UID_MicroscopyBulkSimpleAnnotationsStorage,
 //  UID_MultichannelRespiratoryWaveformStorage,
@@ -977,12 +1009,14 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
 //  UID_ParametricMapStorage,
 //  UID_PatientRadiationDoseSRStorage,
 //  UID_PerformedImagingAgentAdministrationSRStorage,
+//  UID_PhotoacousticImageStorage,
 //  UID_PlannedImagingAgentAdministrationSRStorage,
 //  UID_RadiopharmaceuticalRadiationDoseSRStorage,
 //  UID_RoboticArmRadiationStorage,
 //  UID_RoboticRadiationRecordStorage,
 //  UID_RoutineScalpElectroencephalogramWaveformStorage,
 //  UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
+//  UID_RTPatientPositionAcquisitionInstructionStorage,
 //  UID_RTPhysicianIntentStorage,
 //  UID_RTRadiationRecordSetStorage,
 //  UID_RTRadiationSalvageRecordStorage,
@@ -996,6 +1030,7 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
 //  UID_TomotherapeuticRadiationRecordStorage,
 //  UID_TomotherapeuticRadiationStorage,
 //  UID_TractographyResultsStorage,
+//  UID_VariableModalityLUTSoftcopyPresentationStateStorage,
 //  UID_VolumeRenderingVolumetricPresentationStateStorage,
 //  UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,
 //  UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,
@@ -1007,6 +1042,7 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
 //  UID_HangingProtocolStorage,
 //  UID_ImplantAssemblyTemplateStorage,
 //  UID_ImplantTemplateGroupStorage,
+//  UID_InventoryStorage,
 //  UID_ProtocolApprovalStorage,
 //  UID_XADefinedProcedureProtocolStorage,
     // retired
@@ -1161,10 +1197,12 @@ const char* dcmImageSOPClassUIDs[] = {
     UID_DigitalMammographyXRayImageStorageForProcessing,
     UID_DigitalXRayImageStorageForPresentation,
     UID_DigitalXRayImageStorageForProcessing,
+    UID_EnhancedContinuousRTImageStorage,
     UID_EnhancedCTImageStorage,
     UID_EnhancedMRColorImageStorage,
     UID_EnhancedMRImageStorage,
     UID_EnhancedPETImageStorage,
+    UID_EnhancedRTImageStorage,
     UID_EnhancedUSVolumeStorage,
     UID_EnhancedXAImageStorage,
     UID_EnhancedXRFImageStorage,
@@ -1186,9 +1224,11 @@ const char* dcmImageSOPClassUIDs[] = {
     UID_OphthalmicThicknessMapStorage,
     UID_OphthalmicTomographyImageStorage,
     UID_ParametricMapStorage,
+    UID_PhotoacousticImageStorage,
     UID_PositronEmissionTomographyImageStorage,
     UID_RTImageStorage,
     UID_SecondaryCaptureImageStorage,
+    UID_SegmentationStorage,
     UID_UltrasoundImageStorage,
     UID_UltrasoundMultiframeImageStorage,
     UID_VideoEndoscopicImageStorage,
@@ -1286,16 +1326,19 @@ static const DcmModalityTable modalities[] = {
     { UID_EncapsulatedOBJStorage,                                  "OBJ",  4096 },
     { UID_EncapsulatedPDFStorage,                                  "PDF",  1024 * 1024 },
     { UID_EncapsulatedSTLStorage,                                  "STL",  4096 },
+    { UID_EnhancedContinuousRTImageStorage,                        "RIc",  4096 },
     { UID_EnhancedCTImageStorage,                                  "CTe",  256 * 512 * 512 },
     { UID_EnhancedMRColorImageStorage,                             "MRc",  256 * 512 * 512 * 3 },
     { UID_EnhancedMRImageStorage,                                  "MRe",  256 * 512 * 512 },
     { UID_EnhancedPETImageStorage,                                 "PIe",  512 * 512 * 2 },
+    { UID_EnhancedRTImageStorage,                                  "RIe",  4096 },
     { UID_EnhancedSRStorage,                                       "SRe",  4096 },
     { UID_EnhancedUSVolumeStorage,                                 "USe",  512 * 512 },
     { UID_EnhancedXAImageStorage,                                  "XAe",  256 * 512 * 512 },
     { UID_EnhancedXRayRadiationDoseSRStorage,                      "SRde", 4096 },
     { UID_EnhancedXRFImageStorage,                                 "RFe",  256 * 512 * 512 },
     { UID_ExtensibleSRStorage,                                     "SRx",  4096 },
+    { UID_General32BitECGWaveformStorage,                          "ECGh", 4096 },
     { UID_GeneralAudioWaveformStorage,                             "AUG",  4096 },
     { UID_GeneralECGWaveformStorage,                               "ECG",  4096 },
     { UID_GenericImplantTemplateStorage,                           "IT",   4096 },
@@ -1309,6 +1352,7 @@ static const DcmModalityTable modalities[] = {
     { UID_IntraocularLensCalculationsStorage,                      "OPc",  4096 },
     { UID_IntravascularOpticalCoherenceTomographyImageStorageForPresentation, "OCt", 512 * 512 },
     { UID_IntravascularOpticalCoherenceTomographyImageStorageForProcessing, "OCp", 512 * 512 },
+    { UID_InventoryStorage,                                        "INV",  4096 },
     { UID_KeratometryMeasurementsStorage,                          "OPk",  4096 },
     { UID_KeyObjectSelectionDocumentStorage,                       "KO",   4096 },
     { UID_LegacyConvertedEnhancedCTImageStorage,                   "CTl",  512 * 512 * 2 },
@@ -1338,13 +1382,14 @@ static const DcmModalityTable modalities[] = {
     { UID_ParametricMapStorage,                                    "PM",   256 * 256 * 4 },
     { UID_PatientRadiationDoseSRStorage,                           "SRq",  4096 },
     { UID_PerformedImagingAgentAdministrationSRStorage,            "SRi",  4096 },
+    { UID_PhotoacousticImageStorage,                               "PA",   256 * 512 * 512 },
     { UID_PlannedImagingAgentAdministrationSRStorage,              "SRj",  4096 },
     { UID_PositronEmissionTomographyImageStorage,                  "PI",   512 * 512 * 2 },
     { UID_ProcedureLogStorage,                                     "SRp",  4096 },
-    { UID_ProtocolApprovalStorage,                                 "PA",   4096 },
+    { UID_ProtocolApprovalStorage,                                 "PAp",  4096 },  /* was PA */
     { UID_PseudoColorSoftcopyPresentationStateStorage,             "PSp",  4096 },
     { UID_RadiopharmaceuticalRadiationDoseSRStorage,               "SRr",  4096 },
-    { UID_RawDataStorage,                                          "RAW",  512 * 512 * 256 },
+    { UID_RawDataStorage,                                          "RAW",  256 * 512 * 512 },
     { UID_RealWorldValueMappingStorage,                            "RWM",  4096 },
     { UID_RespiratoryWaveformStorage,                              "WVr",  4096 },
     { UID_RoboticArmRadiationStorage,                              "Rra",  4096 },  /* was RRr */
@@ -1358,6 +1403,7 @@ static const DcmModalityTable modalities[] = {
     { UID_RTImageStorage,                                          "RI",   4096 },
     { UID_RTIonBeamsTreatmentRecordStorage,                        "RTi",  4096 },
     { UID_RTIonPlanStorage,                                        "RPi",  4096 },
+    { UID_RTPatientPositionAcquisitionInstructionStorage,          "RPp",  4096 },
     { UID_RTPlanStorage,                                           "RP" ,  4096 },
     { UID_RTPhysicianIntentStorage,                                "RIp",  4096 },
     { UID_RTRadiationRecordSetStorage,                             "RSr",  4096 },
@@ -1369,7 +1415,7 @@ static const DcmModalityTable modalities[] = {
     { UID_RTTreatmentPreparationStorage,                           "RTp",  4096 },
     { UID_RTTreatmentSummaryRecordStorage,                         "RTs",  4096 },
     { UID_SecondaryCaptureImageStorage,                            "SC",   512 * 512 * 2 },
-    { UID_SegmentationStorage,                                     "SG",   4096 },
+    { UID_SegmentationStorage,                                     "SG",   512 * 512 },
     { UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage, "VPs", 4096 },
     { UID_SimplifiedAdultEchoSRStorage,                            "SRu",  4096 },
     { UID_SleepElectroencephalogramWaveformStorage,                "WVs",  4096 },
@@ -1387,6 +1433,7 @@ static const DcmModalityTable modalities[] = {
     { UID_TwelveLeadECGWaveformStorage,                            "TLE",  4096 },
     { UID_UltrasoundImageStorage,                                  "US",   512 * 512 },
     { UID_UltrasoundMultiframeImageStorage,                        "USm",  512 * 512 },
+    { UID_VariableModalityLUTSoftcopyPresentationStateStorage,     "PSv",  4096 },
     { UID_VideoEndoscopicImageStorage,                             "VVe",  768 * 576 * 3 },
     { UID_VideoMicroscopicImageStorage,                            "VVm",  768 * 576 * 3 },
     { UID_VideoPhotographicImageStorage,                           "VVp",  768 * 576 * 3 },
@@ -1481,7 +1528,7 @@ unsigned long dcmGuessModalityBytes(const char *sopClassUID)
 
 
 /*
-** dcmFindNameOfUID(const char* uid)
+** dcmFindNameOfUID(const char* uid, const char* defaultValue)
 ** Return the name of a UID.
 ** Performs a table lookup and returns a pointer to a read-only string.
 ** Returns defaultValue if the UID is not known.
@@ -1520,22 +1567,22 @@ dcmFindUIDFromName(const char* name)
 
 
 /*
-** dcmFindKeywordOfUID(const char* uid)
+** dcmFindKeywordOfUID(const char* uid, const char* defaultValue)
 ** Return the keyword of a UID.
 ** Performs a table lookup and returns a pointer to a read-only string.
-** Returns NULL if the UID is not known.
+** Returns defaultValue if the UID is not known.
 */
 
 const char*
-dcmFindKeywordOfUID(const char* uid)
+dcmFindKeywordOfUID(const char* uid, const char* defaultValue)
 {
-    if (uid == NULL) return NULL;
+    if (uid == NULL) return defaultValue;
     for (int i = 0; i < uidNameMap_size; i++) {
       if (uidNameMap[i].uid != NULL && strcmp(uid, uidNameMap[i].uid) == 0) {
         return uidNameMap[i].keyword;
       }
     }
-    return NULL;
+    return defaultValue;
 }
 
 //
index f3bc300ddcd24cf32a2c6b0b9fd5f80e02d0b02a..5fdc9d72713da1ffc38d91edfb603506ad7a1ac3 100644 (file)
@@ -38,6 +38,7 @@ typedef struct
     OFBool              retired;
     E_StreamCompression streamCompression;
     OFBool              referenced;
+    OFBool              fragmentable;
 } S_XferNames;
 
 
@@ -58,6 +59,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
     // entry #1
@@ -72,6 +74,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
     // entry #2
@@ -86,6 +89,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
     // entry #3
@@ -100,6 +104,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFTrue, // retired with Supplement 98
       ESC_none,
+      OFFalse,
       OFFalse
     },
     // entry #4
@@ -114,7 +119,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #5
     { UID_JPEGProcess2_4TransferSyntax,
@@ -128,7 +134,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #6
     { UID_JPEGProcess3_5TransferSyntax,
@@ -142,7 +149,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #7
     { UID_JPEGProcess6_8TransferSyntax,
@@ -156,7 +164,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #8
     { UID_JPEGProcess7_9TransferSyntax,
@@ -170,7 +179,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #9
     { UID_JPEGProcess10_12TransferSyntax,
@@ -184,7 +194,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #10
     { UID_JPEGProcess11_13TransferSyntax,
@@ -198,7 +209,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #11
     { UID_JPEGProcess14TransferSyntax,
@@ -212,7 +224,8 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #12
     { UID_JPEGProcess15TransferSyntax,
@@ -226,7 +239,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #13
     { UID_JPEGProcess16_18TransferSyntax,
@@ -240,7 +254,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #14
     { UID_JPEGProcess17_19TransferSyntax,
@@ -254,7 +269,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #15
     { UID_JPEGProcess20_22TransferSyntax,
@@ -268,7 +284,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #16
     { UID_JPEGProcess21_23TransferSyntax,
@@ -282,7 +299,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #17
     { UID_JPEGProcess24_26TransferSyntax,
@@ -296,7 +314,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #18
     { UID_JPEGProcess25_27TransferSyntax,
@@ -310,7 +329,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #19
     { UID_JPEGProcess28TransferSyntax,
@@ -324,7 +344,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #20
     { UID_JPEGProcess29TransferSyntax,
@@ -338,7 +359,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFTrue,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #21
     { UID_JPEGProcess14SV1TransferSyntax,
@@ -352,7 +374,8 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #22
     { UID_RLELosslessTransferSyntax,
@@ -366,6 +389,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
     // entry #23
@@ -384,6 +408,7 @@ const S_XferNames XferNames[] =
 #else
       ESC_unsupported,
 #endif
+      OFFalse,
       OFFalse
     },
     // entry #24
@@ -398,7 +423,8 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #25
     { UID_JPEGLSLossyTransferSyntax,
@@ -412,7 +438,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #26
     { UID_JPEG2000LosslessOnlyTransferSyntax,
@@ -426,7 +453,8 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #27
     { UID_JPEG2000TransferSyntax,
@@ -440,7 +468,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #28
    { UID_JPEG2000Part2MulticomponentImageCompressionLosslessOnlyTransferSyntax,
@@ -454,7 +483,8 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #29
    { UID_JPEG2000Part2MulticomponentImageCompressionTransferSyntax,
@@ -468,7 +498,8 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
     // entry #30
    { UID_JPIPReferencedTransferSyntax,
@@ -482,7 +513,8 @@ const S_XferNames XferNames[] =
       OFTrue,               // really lossy?
       OFFalse,
       ESC_none,
-      OFTrue
+      OFTrue,
+      OFFalse
     },
     // entry #31
    { UID_JPIPReferencedDeflateTransferSyntax,
@@ -500,7 +532,8 @@ const S_XferNames XferNames[] =
 #else
       ESC_unsupported,
 #endif
-      OFTrue
+      OFTrue,
+      OFFalse
     },
     // entry #32
     { UID_MPEG2MainProfileAtMainLevelTransferSyntax,
@@ -514,9 +547,25 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
     // entry #33
+    { UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax,
+      "Fragmentable MPEG2 Main Profile / Main Level",
+      EXS_FragmentableMPEG2MainProfileMainLevel,
+      EBO_LittleEndian,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none,
+      OFFalse,
+      OFTrue
+    },
+    // entry #34
     { UID_MPEG2MainProfileAtHighLevelTransferSyntax,
       "MPEG2 Main Profile @ High Level",  // changed with DICOM 2016e to: MPEG2 Main Profile / High Level
       EXS_MPEG2MainProfileAtHighLevel,
@@ -528,9 +577,25 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
-    // entry #34
+    // entry #35
+    { UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax,
+      "Fragmentable MPEG2 Main Profile / High Level",
+      EXS_FragmentableMPEG2MainProfileHighLevel,
+      EBO_LittleEndian,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none,
+      OFFalse,
+      OFTrue
+    },
+    // entry #36
     { UID_MPEG4HighProfileLevel4_1TransferSyntax,
       "MPEG-4 AVC/H.264 High Profile / Level 4.1",
       EXS_MPEG4HighProfileLevel4_1,
@@ -542,9 +607,25 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
-    // entry #35
+    // entry #37
+    { UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax,
+      "Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.1",
+      EXS_FragmentableMPEG4HighProfileLevel4_1,
+      EBO_LittleEndian,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none,
+      OFFalse,
+      OFTrue
+    },
+    // entry #38
     { UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,
       "MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1",
       EXS_MPEG4BDcompatibleHighProfileLevel4_1,
@@ -556,9 +637,25 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
-    // entry #36
+    // entry #39
+    { UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,
+      "Fragmentable MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1",
+      EXS_FragmentableMPEG4BDcompatibleHighProfileLevel4_1,
+      EBO_LittleEndian,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none,
+      OFFalse,
+      OFTrue
+    },
+    // entry #40
     { UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,
       "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video",
       EXS_MPEG4HighProfileLevel4_2_For2DVideo,
@@ -570,9 +667,25 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
-    // entry #37
+    // entry #41
+    { UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,
+      "Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video",
+      EXS_FragmentableMPEG4HighProfileLevel4_2_For2DVideo,
+      EBO_LittleEndian,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none,
+      OFFalse,
+      OFTrue
+    },
+    // entry #42
     { UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,
       "MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video",
       EXS_MPEG4HighProfileLevel4_2_For3DVideo,
@@ -584,9 +697,25 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
-    // entry #38
+    // entry #43
+    { UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,
+      "Fragmentable MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video",
+      EXS_FragmentableMPEG4HighProfileLevel4_2_For3DVideo,
+      EBO_LittleEndian,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none,
+      OFFalse,
+      OFTrue
+    },
+    // entry #44
     { UID_MPEG4StereoHighProfileLevel4_2TransferSyntax,
       "MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2",
       EXS_MPEG4StereoHighProfileLevel4_2,
@@ -598,9 +727,25 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     },
-    // entry #39
+    // entry #45
+    { UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax,
+      "Fragmentable MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2",
+      EXS_FragmentableMPEG4StereoHighProfileLevel4_2,
+      EBO_LittleEndian,
+      EBO_LittleEndian,
+      EVT_Explicit,
+      EJE_Encapsulated,
+      0L, 0L,
+      OFTrue,
+      OFFalse,
+      ESC_none,
+      OFFalse,
+      OFTrue
+    },
+    // entry #46
     { UID_HEVCMainProfileLevel5_1TransferSyntax,
       "HEVC/H.265 Main Profile / Level 5.1",
       EXS_HEVCMainProfileLevel5_1,
@@ -612,9 +757,10 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
-    // entry #40
+    // entry #47
     { UID_HEVCMain10ProfileLevel5_1TransferSyntax,
       "HEVC/H.265 Main 10 Profile / Level 5.1",
       EXS_HEVCMain10ProfileLevel5_1,
@@ -626,9 +772,10 @@ const S_XferNames XferNames[] =
       OFTrue,
       OFFalse,
       ESC_none,
-      OFFalse
+      OFFalse,
+      OFTrue
     },
-    // entry #41
+    // entry #48
     { UID_PrivateGE_LEI_WithBigEndianPixelDataTransferSyntax,
       "Private GE Little Endian Implicit with big endian pixel data",
       EXS_PrivateGE_LEI_WithBigEndianPixelData,
@@ -640,6 +787,7 @@ const S_XferNames XferNames[] =
       OFFalse,
       OFFalse,
       ESC_none,
+      OFFalse,
       OFFalse
     }
 };
@@ -663,7 +811,8 @@ DcmXfer::DcmXfer(E_TransferSyntax xfer)
     lossy(OFFalse),
     retired(OFFalse),
     streamCompression(ESC_none),
-    referenced(OFFalse)
+    referenced(OFFalse),
+    fragmentable(OFFalse)
 {
     int i = 0;
     while ((i < DIM_OF_XferNames) && XferNames[i].xfer != xfer)
@@ -683,6 +832,7 @@ DcmXfer::DcmXfer(E_TransferSyntax xfer)
         retired            = XferNames[i].retired;
         streamCompression  = XferNames[i].streamCompression;
         referenced         = XferNames[i].referenced;
+        fragmentable       = XferNames[i].fragmentable;
     }
 }
 
@@ -703,7 +853,8 @@ DcmXfer::DcmXfer(const char* xferName_xferID)
     lossy(OFFalse),
     retired(OFFalse),
     streamCompression(ESC_none),
-    referenced(OFFalse)
+    referenced(OFFalse),
+    fragmentable(OFFalse)
 {
     const char* xname = xferName_xferID;
     if (xname != NULL)
@@ -726,6 +877,7 @@ DcmXfer::DcmXfer(const char* xferName_xferID)
             retired            = XferNames[i].retired;
             streamCompression  = XferNames[i].streamCompression;
             referenced         = XferNames[i].referenced;
+            fragmentable       = XferNames[i].fragmentable;
         }
         else
         {
@@ -747,6 +899,7 @@ DcmXfer::DcmXfer(const char* xferName_xferID)
                 retired            = XferNames[i].retired;
                 streamCompression  = XferNames[i].streamCompression;
                 referenced         = XferNames[i].referenced;
+                fragmentable       = XferNames[i].fragmentable;
             }
         }
     }
@@ -769,7 +922,8 @@ DcmXfer::DcmXfer(const DcmXfer &newXfer)
     lossy(newXfer.lossy),
     retired(newXfer.retired),
     streamCompression(newXfer.streamCompression),
-    referenced(newXfer.referenced)
+    referenced(newXfer.referenced),
+    fragmentable(newXfer.fragmentable)
 {
 }
 
@@ -807,6 +961,7 @@ DcmXfer &DcmXfer::operator=(const E_TransferSyntax xfer)
         retired            = XferNames[i].retired;
         streamCompression  = XferNames[i].streamCompression;
         referenced         = XferNames[i].referenced;
+        fragmentable       = XferNames[i].fragmentable;
     } else {
         xferSyn            = EXS_Unknown;
         xferID             = "";
@@ -821,6 +976,7 @@ DcmXfer &DcmXfer::operator=(const E_TransferSyntax xfer)
         retired            = OFFalse;
         streamCompression  = ESC_none;
         referenced         = OFFalse;
+        fragmentable       = OFFalse;
     }
     return *this;
 }
@@ -846,6 +1002,7 @@ DcmXfer &DcmXfer::operator=(const DcmXfer &newXfer)
         retired            = newXfer.retired;
         streamCompression  = newXfer.streamCompression;
         referenced         = newXfer.referenced;
+        fragmentable       = newXfer.fragmentable;
     }
     return *this;
 }
index 8c0859684bfa14417ce0dbc06121d3915b50b7ca..10075d2953606bc737f7183063f6fa049fbc5259 100644 (file)
@@ -17,6 +17,7 @@ DCMTK_ADD_EXECUTABLE(dcmdata_tests
   tsequen.cc
   tspchrs.cc
   tstrval.cc
+  ttag.cc
   tvrcomp.cc
   tvrdatim.cc
   tvrds.cc
index 02afcebd9c35b8df5169a3e294eb32ab38901d3d..8c72e4edfc81995076df21fa0fac3a08def1feca 100644 (file)
@@ -18,7 +18,7 @@ oflogdir = $(top_srcdir)/../oflog
 
 LOCALINCLUDES = -I$(top_srcdir)/include -I$(ofstddir)/include -I$(oflogdir)/include
 LIBDIRS = -L$(top_srcdir)/libsrc -L$(top_srcdir)/libi2d -L$(ofstddir)/libsrc \
-       -L$(oflogdir)/libsrc -L$(top_srcdir)/libdcxml -L$(oficonvdir)/libsrc 
+       -L$(oflogdir)/libsrc -L$(top_srcdir)/libdcxml -L$(oficonvdir)/libsrc
 LOCALLIBS = -ldcmdata -loflog -lofstd -loficonv $(ZLIBLIBS) $(XMLLIBS) $(CHARCONVLIBS) $(MATHLIBS)
 I2DLIBS = -li2d
 LIBDCMXML = -ldcmxml
@@ -26,7 +26,7 @@ LIBDCMXML = -ldcmxml
 objs = tests.o tpread.o ti2dbmp.o tchval.o tpath.o tvrdatim.o telemlen.o tparser.o \
        tdict.o tvrds.o tvrfd.o tvrui.o tvrol.o tvrov.o tvrsv.o tvruv.o tstrval.o \
        tspchrs.o tvrpn.o tparent.o tfilter.o tvrcomp.o tmatch.o tnewdcme.o \
-       tgenuid.o tsequen.o titem.o
+       tgenuid.o tsequen.o titem.o ttag.o
 
 progs = tests
 
index 08fb38a443dea2096598797fea0f0aa926b4efdc..9864ca10145b970bb5d41b7eeac6b6c52c501baf 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2020 OFFIS e.V.
+ *  Copyright (C) 2011-2023 OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -44,6 +44,8 @@ OFTEST_REGISTER(dcmdata_other64bitVeryLong);
 OFTEST_REGISTER(dcmdata_signed64bitVeryLong);
 OFTEST_REGISTER(dcmdata_unsigned64bitVeryLong);
 OFTEST_REGISTER(dcmdata_VRCompare);
+OFTEST_REGISTER(dcmdata_compareTag);
+OFTEST_REGISTER(dcmdata_compareTagKey);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_AE);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_AS);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_AT);
index d995d2a705fdc3426891c594c5496e0401742422..6964c8f52e317225d479f242a149bf7b1bffc2c2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2017-2018, Open Connections GmbH
+ *  Copyright (C) 2017-2023, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -60,7 +60,7 @@ OFTEST(dcmdata_newDicomElementPrivate)
   // Check whether creation as well as tag and value assignment are correct
   OFCHECK(elem);
   OFCHECK(elem->putOFStringArray(PRIVATE_STRING_VALUE).good());
-  OFCHECK(elem->getTag().getXTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM));
+  OFCHECK(elem->getTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM));
   OFCHECK(elem->getVR() == EVR_LO);
   OFCHECK(elem->putOFStringArray(PRIVATE_STRING_VALUE).good());
   char *charVal = NULL;
@@ -72,7 +72,7 @@ OFTEST(dcmdata_newDicomElementPrivate)
   DcmElement* elem2 = NULL;
   // Check whether creation as well as tag and value assignment are correct
   OFCHECK(DcmItem::newDicomElement(elem2, DcmTagKey(PRIVATE_ELEMENT_STRINGELEM), PRIVATE_CREATOR_NAME).good());
-  OFCHECK(elem2->getTag().getXTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM));
+  OFCHECK(elem2->getTag() == DcmTagKey(PRIVATE_ELEMENT_STRINGELEM));
   OFCHECK(elem->getVR() == EVR_LO);
   OFCHECK(elem2->putOFStringArray(PRIVATE_STRING_VALUE).good());
   OFCHECK(elem2->getString(charVal).good());
@@ -88,7 +88,7 @@ OFTEST(dcmdata_newDicomElementPrivate)
   DcmElement *elem_un = NULL;
   elem_un = DcmItem::newDicomElement(DcmTagKey(PRIVATE_ELEMENT_NOTINDICT), PRIVATE_CREATOR_NAME);
   OFCHECK(elem_un);
-  OFCHECK(elem_un->getTag().getXTag() == DcmTagKey(PRIVATE_ELEMENT_NOTINDICT));
+  OFCHECK(elem_un->getTag() == DcmTagKey(PRIVATE_ELEMENT_NOTINDICT));
   OFCHECK(elem_un->getVR() == EVR_UNKNOWN);
   delete elem_un;
 
diff --git a/dcmdata/tests/ttag.cc b/dcmdata/tests/ttag.cc
new file mode 100644 (file)
index 0000000..8426bc3
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ *
+ *  Copyright (C) 2023, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module:  dcmdata
+ *
+ *  Author:  Joerg Riesmeier
+ *
+ *  Purpose: test program for class DcmTag and DcmTagKey
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmdata/dctag.h"
+
+
+OFTEST(dcmdata_compareTag)
+{
+  const DcmTag tag1(0x0011, 0x1000, "Private Creator");
+  const DcmTag tag2(0x0011, 0x1000, "Other Private Creator");
+  const DcmTag tag3(0x0011, 0x1000);
+  const DcmTag tag4(0x0011, 0x1000);
+  const DcmTag tag5(0x0011, 0x1001, "Private Creator");
+  /* compare the tags */
+  OFCHECK(tag1 == tag1);
+  OFCHECK(tag1 != tag2);
+  OFCHECK(!(tag1 == tag2));
+  OFCHECK(tag1 != tag3);
+  OFCHECK(!(tag1 == tag3));
+  OFCHECK(tag2 != tag3);
+  OFCHECK(!(tag2 == tag3));
+  OFCHECK(tag3 == tag4);
+  OFCHECK(tag1 != tag5);
+  OFCHECK(!(tag1 == tag5));
+}
+
+
+OFTEST(dcmdata_compareTagKey)
+{
+  const DcmTag tag1(0x0011, 0x1000, "Private Creator");
+  const DcmTag tag2(0x0011, 0x1000, "Other Private Creator");
+  const DcmTagKey tag3(0x0011, 0x1000);
+  const DcmTagKey tag4(0x0011, 0x1000);
+  const DcmTagKey tag5(0x0011, 0x1001);
+  /* compare the tags */
+  OFCHECK(tag1 == tag2.getTagKey());
+  OFCHECK(tag1 == tag3);
+  OFCHECK(tag2 == tag3);
+  OFCHECK(tag3 == tag4);
+  OFCHECK(tag1 != tag5);
+  OFCHECK(!(tag1 == tag5));
+  OFCHECK(tag2 != tag5);
+  OFCHECK(!(tag2 == tag5));
+  OFCHECK(tag4 != tag5);
+  OFCHECK(!(tag4 == tag5));
+}
index f77342eb73c2cac9a00a87e794165794e9d46f54..253b0d034e0290e0f58569b16f5420216b59de0c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2019-2022, OFFIS e.V.
+ *  Copyright (C) 2019-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -460,13 +460,11 @@ static void checkConcatenationInstance(size_t numInstance, EctEnhancedCT* srcIns
 
     FunctionalGroups::const_iterator srcShared = srcInstance->getFunctionalGroups().getShared()->begin();
     FunctionalGroups::const_iterator cShared   = concat->getFunctionalGroups().getShared()->begin();
-    size_t numShared                           = 0;
     do
     {
         OFCHECK(srcShared->second->compare(*cShared->second) == 0);
         srcShared++;
         cShared++;
-        numShared++;
     } while ((srcShared != srcInstance->getFunctionalGroups().getShared()->end())
              && (cShared != concat->getFunctionalGroups().getShared()->end()));
     OFCHECK((srcShared == srcInstance->getFunctionalGroups().getShared()->end())
index 597514940f20112a387c8700bf4dca85819ca2d9..a55745c47df1d083a667c15bbd28a6aa23948d5a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2019-2022, OFFIS e.V.
+ *  Copyright (C) 2019-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -500,13 +500,11 @@ static void checkConcatenationInstance(size_t numInstance, EctEnhancedCT* srcIns
 
         FunctionalGroups::const_iterator srcShared = srcInstance->getFunctionalGroups().getShared()->begin();
         FunctionalGroups::const_iterator cShared   = concat->getFunctionalGroups().getShared()->begin();
-        size_t numShared                           = 0;
         do
         {
             OFCHECK(srcShared->second->compare(*cShared->second) == 0);
             srcShared++;
             cShared++;
-            numShared++;
         } while ((srcShared != srcInstance->getFunctionalGroups().getShared()->end())
                  && (cShared != concat->getFunctionalGroups().getShared()->end()));
         OFCHECK((srcShared == srcInstance->getFunctionalGroups().getShared()->end())
index 49abd0bc9b8d2136e01b42f44ef6d3148a6557cc..e7b210e2d49d19b666c689386746c982a7024c0b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2021, OFFIS e.V.
+ *  Copyright (C) 1996-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -202,8 +202,9 @@ int main(int argc, char *argv[])
 
     prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION);
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
+    cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
+    cmd.addParam("dcmfile-in", "DICOM input filename to be converted\n(\"-\" for stdin)");
     cmd.addParam("bitmap-out", OFFIS_OUTFILE_DESCRIPTION, OFCmdParam::PM_Optional);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
index cb7db1931b244eef25842bc71e20581069728d7d..662053ee248bb08c7fa2ec41888feb36ca77ddc0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2018, OFFIS e.V.
+ *  Copyright (C) 2018-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -91,9 +91,10 @@ int main(int argc, char *argv[])
 
     prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION);
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
+    cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
     cmd.addParam("dcmfile-in-1",  "Reference DICOM image file for comparison");
-    cmd.addParam("dcmfile-in-2",  "Test DICOM image file for comparison");
+    cmd.addParam("dcmfile-in-2",  "Test DICOM image file for comparison\n(\"-\" for stdin)");
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
      cmd.addOption("--help",                "-h",      "print this help text and exit", OFCommandLine::AF_Exclusive);
index 7e5c02d18f42cde5dc67fc1ff1146f13818446ef..f519a52a7db03cf4b70ee0ee92973def2b79c388 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2001-2021, OFFIS e.V.
+ *  Copyright (C) 2001-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -107,9 +107,10 @@ int main(int argc, char *argv[])
 
     prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION);
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
+    cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-    cmd.addParam("dcmfile-out", "DICOM output filename to be written");
+    cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+    cmd.addParam("dcmfile-out", "DICOM output filename to be written\n(\"-\" for stdout)");
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
      cmd.addOption("--help",                 "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 98aae18e08c76c91ad7e7ee4a2940e5eb803c337..8d03a233a19f6a00c2d9427d3ed1c673b9141a1d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2021, OFFIS e.V.
+ *  Copyright (C) 2002-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -104,9 +104,10 @@ int main(int argc, char *argv[])
 
     prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION);
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
+    cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in",  "DICOM input filename to be scaled");
-    cmd.addParam("dcmfile-out", "DICOM output filename to be written");
+    cmd.addParam("dcmfile-in",  "DICOM input filename to be scaled\n(\"-\" for stdin)");
+    cmd.addParam("dcmfile-out", "DICOM output filename to be written\n(\"-\" for stdout)");
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
      cmd.addOption("--help",                "-h",       "print this help text and exit", OFCommandLine::AF_Exclusive);
index 468c59fad4911734c2fad1ad253bb488d9df7554..d8edba0e7424ee31bbf6894b6e08fc410e0abe70 100644 (file)
@@ -24,7 +24,7 @@ number of JPEG compression schemes.
 \section dcm2pnm_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  DICOM input filename to be converted
+dcmfile-in  DICOM input filename to be converted ("-" for stdin)
 
 bitmap-out  output filename to be written (default: stdout)
 \endverbatim
@@ -397,10 +397,10 @@ image format:
 The following preferred interpolation algorithms can be selected using the
 \e --interpolate option:
 
-\li 1 = free scaling algorithm with interpolation from pbmplus toolkit
-\li 2 = free scaling algorithm with interpolation from c't magazine
-\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
-\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
+- 1 = free scaling algorithm with interpolation from pbmplus toolkit
+- 2 = free scaling algorithm with interpolation from c't magazine
+- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
+- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
 
 The \e --write-tiff option is only available when DCMTK has been configured
 and compiled with support for the external \b libtiff TIFF library.  The
@@ -496,6 +496,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcm2pnm_copyright COPYRIGHT
 
-Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 133b74abd59bfaf0ca5fb5a490fc279504b3ec66..ac7024561df13488e9d22d41d58953ae534a19e9 100644 (file)
@@ -50,7 +50,7 @@ All metrics are computed as defined in R.C. Gonzalez and R.E. Woods,
 \verbatim
 dcmfile-in-1  Reference DICOM image file for comparison
 
-dcmfile-in-2  Test DICOM image file for comparison
+dcmfile-in-2  Test DICOM image file for comparison ("-" for stdin)
 \endverbatim
 
 \section dcmicmp_options OPTIONS
@@ -372,6 +372,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmicmp_copyright COPYRIGHT
 
-Copyright (C) 2018-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2018-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 47a808f725c300ef6aac3da38d9e058b24fbfc90..bed1204e73b453e0c8f707cae3928f71956c2aa9 100644 (file)
@@ -22,9 +22,9 @@ DICOM palette color image.
 \section dcmquant_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename to be written
+dcmfile-out  DICOM output filename to be written ("-" for stdout)
 \endverbatim
 
 \section dcmquant_options OPTIONS
@@ -284,6 +284,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmquant_copyright COPYRIGHT
 
-Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 38a06b8872c8b5d89d3ac2189becfcc0ebaef209..ef4975b86ff82e5ace77b45ab6e256c5ef4d7508 100644 (file)
@@ -21,9 +21,9 @@ supports uncompressed and RLE compressed DICOM images.
 \section dcmscale_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be scaled
+dcmfile-in   DICOM input filename to be scaled ("-" for stdin)
 
-dcmfile-out  DICOM output filename to be written
+dcmfile-out  DICOM output filename to be written ("-" for stdout)
 \endverbatim
 
 \section dcmscale_options OPTIONS
@@ -202,10 +202,10 @@ data set trailing padding (not with --write-dataset):
 The following preferred interpolation algorithms can be selected using the
 \e --interpolate option:
 
-\li 1 = free scaling algorithm with interpolation from pbmplus toolkit
-\li 2 = free scaling algorithm with interpolation from c't magazine
-\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
-\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
+- 1 = free scaling algorithm with interpolation from pbmplus toolkit
+- 2 = free scaling algorithm with interpolation from c't magazine
+- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
+- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
 
 \section dcmscale_logging LOGGING
 
@@ -266,6 +266,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmscale_copyright COPYRIGHT
 
-Copyright (C) 2002-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2002-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 83ea1ab5968ff56fc709ca9e1708fb0452ee4bb5..de6d03473a20a5be9b73ac43bc6927841db751f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2021, OFFIS e.V.
+ *  Copyright (C) 2021-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -677,10 +677,10 @@ OFCondition DicomImageComparison::computeMonochromeImageComparionMetricsRaw()
         DCMIMAGE_DEBUG("square_error_sum: " << square_error_sum);
 
         // as a helper variable, divide the sum of squared errors by the total number of samples
-        double meanSquareError = square_error_sum / (numValues * fcount);
+        double meanSquareError = square_error_sum / numValues;
 
         // the mean absolute error is the sum of (unsigned) error values divided by the total number of samples
-        meanAbsoluteError = simple_error_sum / (numValues * fcount);
+        meanAbsoluteError = simple_error_sum / numValues;
 
         // RMSE is the square root of the mean square error
         rootMeanSquareError = sqrt(meanSquareError);
index 49830a6116f8d030107d6bcd738acac56d94fd34..23a5d0ef10d7af251593bd0757380744bab604b9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2022, Open Connections GmbH
+ *  Copyright (C) 2015-2023, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -422,7 +422,7 @@ OFCondition DcmIODUtil::setFloat64ValuesOnElement(DcmElement& delem,
     OFCondition result;
     if (values.size() > OFnumeric_limits<unsigned long>::max())
     {
-        DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag().getXTag());
+        DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag());
         return IOD_EC_InvalidElementValue;
     }
     const unsigned long vmCount          = OFstatic_cast(unsigned long, values.size());
@@ -432,8 +432,8 @@ OFCondition DcmIODUtil::setFloat64ValuesOnElement(DcmElement& delem,
         result = delem.putFloat64((*it), count);
         if (result.bad())
         {
-            DCMIOD_WARN(delem.getTag().getXTag() << ": Setting value "
-                                                 << " #" << count << " to \" " << *it << "\" not possible");
+            DCMIOD_WARN(delem.getTag() << ": Setting value "
+                                       << " #" << count << " to \" " << *it << "\" not possible");
         }
         else if (check)
         {
@@ -457,7 +457,7 @@ OFCondition DcmIODUtil::setFloat32ValuesOnElement(DcmElement& delem,
     OFCondition result;
     if (values.size() > OFnumeric_limits<unsigned long>::max())
     {
-        DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag().getXTag());
+        DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag());
         return IOD_EC_InvalidElementValue;
     }
     const unsigned long vmCount          = OFstatic_cast(unsigned long, values.size());
@@ -467,8 +467,8 @@ OFCondition DcmIODUtil::setFloat32ValuesOnElement(DcmElement& delem,
         result = delem.putFloat32((*it), count);
         if (result.bad())
         {
-            DCMIOD_WARN(delem.getTag().getXTag() << ": Setting value "
-                                                 << " #" << count << " to \" " << *it << "\" not possible");
+            DCMIOD_WARN(delem.getTag() << ": Setting value "
+                                       << " #" << count << " to \" " << *it << "\" not possible");
         }
         else if (check)
         {
@@ -487,7 +487,7 @@ OFCondition DcmIODUtil::setUint16ValuesOnElement(DcmElement& delem,
     OFCondition result;
     if (values.size() > OFnumeric_limits<unsigned long>::max())
     {
-        DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag().getXTag());
+        DCMIOD_ERROR("Too many values provided (" << values.size() << " for element: " << delem.getTag());
         return IOD_EC_InvalidElementValue;
     }
     const unsigned long vmCount         = OFstatic_cast(unsigned long, values.size());
@@ -497,8 +497,8 @@ OFCondition DcmIODUtil::setUint16ValuesOnElement(DcmElement& delem,
         result = delem.putUint16((*it), count);
         if (result.bad())
         {
-            DCMIOD_WARN(delem.getTag().getXTag() << ": Setting value "
-                                                 << " #" << count << " to \" " << *it << "\" not possible");
+            DCMIOD_WARN(delem.getTag() << ": Setting value "
+                                       << " #" << count << " to \" " << *it << "\" not possible");
         }
         else if (check)
         {
@@ -520,8 +520,8 @@ OFCondition DcmIODUtil::getUint16ValuesFromElement(DcmElement& delem, OFVector<U
         result = delem.getUint16(val, OFstatic_cast(unsigned long, i));
         if (result.bad())
         {
-            DCMIOD_WARN(delem.getTag().getXTag() << ": Getting value "
-                                                 << " #" << i << " not possible");
+            DCMIOD_WARN(delem.getTag() << ": Getting value "
+                                       << " #" << i << " not possible");
             break;
         }
         values.push_back(val);
@@ -553,7 +553,7 @@ OFCondition DcmIODUtil::getAndCheckSingleItem(DcmSequenceOfItems& seq, DcmItem*&
     const OFString tagName = OFconst_cast(DcmTag*, &seq.getTag())->getTagName(); // getTagName is not const...
     if (checkKey != DCM_UndefinedTagKey)
     {
-        if (seq.getTag().getXTag() != checkKey)
+        if (seq.getTag() != checkKey)
         {
             DCMIOD_ERROR("Expected sequence " << checkKey << " but got " << &seq.getTag() << "(" << tagName << ")");
             return EC_ItemNotFound;
index 766b215b08c57619607a3a4a98fe54b05dc9156c..7c7cba15a2f95845edb7a29fd15ba63fe360c9a8 100644 (file)
@@ -101,8 +101,8 @@ int main(int argc, char *argv[])
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
    cmd.addOption("--help",                   "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index dd06291765838b42c75739c28369a8eacf66aa1f..0c9636389bef022214401c59380c9a196f52e27a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2001-2021, OFFIS e.V.
+ *  Copyright (C) 2001-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -74,8 +74,8 @@ int main(int argc, char *argv[])
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
     cmd.addOption("--help",                  "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 57d70c2299fb444ebf20681935bcefe99ea9e1b2..289fb456fcf93cc542776afcd748fb20d28a78a8 100644 (file)
@@ -21,9 +21,9 @@ syntax) and writes the converted image to an output file (\e dcmfile-out).
 \section dcmcjpeg_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmcjpeg_options OPTIONS
@@ -570,12 +570,14 @@ compressed image still complies with all restrictions of the object's IOD.
 
 A few examples:
 
-\li MR images are required to have BitsAllocated=16.
-\li NM Images can only be encoded with MONOCHROME2 or PALETTE COLOR photometric
-    interpretation but not with RGB or YBR_FULL (which effectively prevents
-    compression).
-\li Hardcopy Color images must have RGB color model which is a problem if lossy
-    compression is to be performed.
+- MR images are required to have BitsAllocated=16.
+
+- NM Images can only be encoded with MONOCHROME2 or PALETTE COLOR photometric
+  interpretation but not with RGB or YBR_FULL (which effectively prevents
+  compression).
+
+- Hardcopy Color images must have RGB color model which is a problem if lossy
+  compression is to be performed.
 
 The user is responsible for making sure that the compressed images he creates
 are compliant with the DICOM standard.  If in question, the \b dcmcjpeg utility
@@ -587,14 +589,18 @@ added (\e --true-lossless).  Compared to the old (\e --pseudo-lossless) encoder,
 that creates slightly lossy images caused from internal color space conversions,
 windowing etc., there are a some issues to consider:
 
-\li Only source images with Bits Allocated 8 or 16 are supported
-\li Options for color space conversions, windowing or pixel scaling are
-    ignored or overridden
-\li Photometric Interpretations YBR_FULL_422, YBR_PARTIAL_422, YBR_PARTIAL_420,
-    YBR_ICT, YBR_RCT are not supported
-\li The encoder changes automatically Planar Configuration from 1 to 0 if
-    necessary
-\li The compression ratio can be lower than in \e --pseudo-lossless mode
+- Only source images with Bits Allocated 8 or 16 are supported
+
+- Options for color space conversions, windowing or pixel scaling are
+  ignored or overridden
+
+- Photometric Interpretations YBR_FULL_422, YBR_PARTIAL_422, YBR_PARTIAL_420,
+  YBR_ICT, YBR_RCT are not supported
+
+- The encoder changes automatically Planar Configuration from 1 to 0 if
+  necessary
+
+- The compression ratio can be lower than in \e --pseudo-lossless mode
 
 However, when using the new encoder (default), you can be sure, that
 compression does not affect image quality.
@@ -701,6 +707,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmcjpeg_copyright COPYRIGHT
 
-Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 04f2813643b262552978b7bc06a5c40e499f90dd..7828d47aa34751c51262189fd70ff9802ace2b7a 100644 (file)
@@ -21,9 +21,9 @@ and writes the converted image to an output file (\e dcmfile-out).
 \section dcmdjpeg_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmdjpeg_options OPTIONS
@@ -347,6 +347,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmdjpeg_copyright COPYRIGHT
 
-Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index bc5a7f6e7557338f9cde1063e9b2d69b06f5793a..5bbf8c4e6364b2e35b853f53caf475b4084ee350 100644 (file)
@@ -23,7 +23,7 @@ supports uncompressed as well as JPEG and RLE compressed DICOM images.
 \section dcmj2pnm_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  DICOM input filename to be converted
+dcmfile-in  DICOM input filename to be converted ("-" for stdin)
 
 bitmap-out  output filename to be written (default: stdout)
 \endverbatim
@@ -468,10 +468,10 @@ image format:
 The following preferred interpolation algorithms can be selected using the
 \e --interpolate option:
 
-\li 1 = free scaling algorithm with interpolation from pbmplus toolkit
-\li 2 = free scaling algorithm with interpolation from c't magazine
-\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
-\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
+- 1 = free scaling algorithm with interpolation from pbmplus toolkit
+- 2 = free scaling algorithm with interpolation from c't magazine
+- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
+- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
 
 The \e --write-tiff option is only available when DCMTK has been configured
 and compiled with support for the external \b libtiff TIFF library.  The
@@ -573,6 +573,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmj2pnm_copyright COPYRIGHT
 
-Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 8f97ad313bb528c53b51da5727823146ba74aa0d..f373bc8c1446fee5894bdcf561af58e2ca3d7e4a 100644 (file)
@@ -20,45 +20,74 @@ Profiles.
 
 Currently the following profiles are supported (others might be added later):
 
-\li General Purpose CD-R Interchange (STD-GEN-CD)
-\li General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM)
-\li General Purpose DVD Interchange with JPEG (STD-GEN-DVD-JPEG)
-\li General Purpose DVD Interchange with JPEG 2000 (STD-GEN-DVD-J2K)
-\li General Purpose BD Interchange with JPEG (STD-GEN-BD-JPEG)
-\li General Purpose BD Interchange with JPEG 2000 (STD-GEN-BD-J2K)
-\li General Purpose BD Interchange with MPEG2 MP\@ML (STD-GEN-BD-MPEG2-MPML)
-\li General Purpose BD Interchange with MPEG2 MP\@HL (STD-GEN-BD-MPEG2-MPHL)
-\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.1
-    (STD-GEN-BD-MPEG4-HPLV41)
-\li General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible
-    HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
-\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D
-    video (STD-GEN-BD-MPEG4-HPLV42-2D)
-\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D
-    video (STD-GEN-BD-MPEG4-HPLV42-3D)
-\li General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2
-    (STD-GEN-BD-MPEG4-SHPLV42)
-\li General Purpose USB and Flash Memory Interchange with JPEG
-    (STD-GEN-USB/MMC/CF/SD-JPEG)
-\li General Purpose USB and Flash Memory Interchange with JPEG 2000
-    (STD-GEN-USB/MMC/CF/SD-J2K)
-\li General Purpose MIME Interchange (STD-GEN-MIME)
-\li DVD Interchange with MPEG2 MP\@ML (STD-DVD-MPEG2-MPML)
-\li Basic Cardiac X-Ray Angiographic Studies on CD-R Media (STD-XABC-CD)
-\li 1024 X-Ray Angiographic Studies on CD-R Media (STD-XA1K-CD)
-\li 1024 X-Ray Angiographic Studies on DVD Media (STD-XA1K-DVD)
-\li Dental Radiograph Interchange (STD-DEN-CD)
-\li CT/MR Studies on various Media (STD-CTMR-xxxx)
-\li Ultrasound Single Frame for Image Display (STD-US-ID-SF-xxxx)
-\li Ultrasound Single Frame with Spatial Calibration (STD-US-SC-SF-xxxx)
-\li Ultrasound Single Frame with Combined Calibration (STD-US-CC-SF-xxxx)
-\li Ultrasound Single & Multi-Frame for Image Display (STD-US-ID-MF-xxxx)
-\li Ultrasound Single & Multi-Frame with Spatial Calibration
-    (STD-US-SC-MF-xxxx)
-\li Ultrasound Single & Multi-Frame with Combined Calibration
-    (STD-US-CC-MF-xxxx)
-\li 12-lead ECG Interchange on Diskette (STD-WVFM-ECG-FD)
-\li Hemodynamic Waveform Interchange on Diskette (STD-WVFM-HD-FD)
+- General Purpose CD-R Interchange (STD-GEN-CD)
+
+- General Purpose Interchange on DVD-RAM Media (STD-GEN-DVD-RAM)
+
+- General Purpose DVD Interchange with JPEG (STD-GEN-DVD-JPEG)
+
+- General Purpose DVD Interchange with JPEG 2000 (STD-GEN-DVD-J2K)
+
+- General Purpose BD Interchange with JPEG (STD-GEN-BD-JPEG)
+
+- General Purpose BD Interchange with JPEG 2000 (STD-GEN-BD-J2K)
+
+- General Purpose BD Interchange with MPEG2 MP\@ML (STD-GEN-BD-MPEG2-MPML)
+
+- General Purpose BD Interchange with MPEG2 MP\@HL (STD-GEN-BD-MPEG2-MPHL)
+
+- General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.1
+  (STD-GEN-BD-MPEG4-HPLV41)
+
+- General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible
+  HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
+
+- General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D
+  video (STD-GEN-BD-MPEG4-HPLV42-2D)
+
+- General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D
+  video (STD-GEN-BD-MPEG4-HPLV42-3D)
+
+- General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2
+  (STD-GEN-BD-MPEG4-SHPLV42)
+
+- General Purpose USB and Flash Memory Interchange with JPEG
+  (STD-GEN-USB/MMC/CF/SD-JPEG)
+
+- General Purpose USB and Flash Memory Interchange with JPEG 2000
+  (STD-GEN-USB/MMC/CF/SD-J2K)
+
+- General Purpose MIME Interchange (STD-GEN-MIME)
+
+- DVD Interchange with MPEG2 MP\@ML (STD-DVD-MPEG2-MPML)
+
+- Basic Cardiac X-Ray Angiographic Studies on CD-R Media (STD-XABC-CD)
+
+- 1024 X-Ray Angiographic Studies on CD-R Media (STD-XA1K-CD)
+
+- 1024 X-Ray Angiographic Studies on DVD Media (STD-XA1K-DVD)
+
+- Dental Radiograph Interchange (STD-DEN-CD)
+
+- CT/MR Studies on various Media (STD-CTMR-xxxx)
+
+- Ultrasound Single Frame for Image Display (STD-US-ID-SF-xxxx)
+
+- Ultrasound Single Frame with Spatial Calibration (STD-US-SC-SF-xxxx)
+
+- Ultrasound Single Frame with Combined Calibration (STD-US-CC-SF-xxxx)
+
+- Ultrasound Single & Multi-Frame for Image Display (STD-US-ID-MF-xxxx)
+
+- Ultrasound Single & Multi-Frame with Spatial Calibration
+  (STD-US-SC-MF-xxxx)
+
+- Ultrasound Single & Multi-Frame with Combined Calibration
+  (STD-US-CC-MF-xxxx)
+
+- 12-lead ECG Interchange on Diskette (STD-WVFM-ECG-FD)
+
+- Hemodynamic Waveform Interchange on Diskette (STD-WVFM-HD-FD)
 
 This tool extends \b dcmgpdir which can only create General Purpose \e DICOMDIR
 files.  The default behavior of \b dcmmkdir (with \e --general-purpose) is
@@ -477,6 +506,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmmkdir_copyright COPYRIGHT
 
-Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index a6861f3b4b8b3e940cf0642cacd48ca8a1d7e7ac..364b75533bf17dee98332e27a4cabcecbe25f03b 100644 (file)
@@ -638,7 +638,7 @@ OFCondition DJCodecDecoder::determineDecompressedColorModel(
     Uint32 startFragment = 1;
     Uint32 bufSize = 0;
     // determine size of uncompressed frame
-    if ((fromPixSeq->getUncompressedFrameSize(dataset, bufSize).good()) && (bufSize > 0))
+    if ((fromPixSeq->getUncompressedFrameSize(dataset, bufSize, OFFalse).good()) && (bufSize > 0))
     {
       // allocate temporary buffer for a single frame
       Uint8 *buffer = new Uint8[bufSize];
index 85f18eacafc7220975b7d1039b3a936c1575e16c..6921f71dab72cf9dc52f225818b27d37c1e01f3b 100644 (file)
@@ -100,8 +100,8 @@ LICENSE_FILE_DECLARATIONS
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
     cmd.addOption("--help",                     "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 4e9169264926aa54d8bab11800c4dacdd6660110..73b935b22131c37d5f21deb920320842b40ee097 100644 (file)
@@ -82,8 +82,8 @@ LICENSE_FILE_DECLARATIONS
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted");
-  cmd.addParam("dcmfile-out", "DICOM output filename");
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be converted\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)");
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
    cmd.addOption("--help",                      "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 614c464918030d0619d08b86187cdb8cada54e37..9e577b131548a50e532ba66a06f87238e531a216 100644 (file)
@@ -22,9 +22,9 @@ transfer syntax) and writes the converted image to an output file
 \section dcmcjpls_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmcjpls_options OPTIONS
@@ -387,6 +387,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmcjpls_copyright COPYRIGHT
 
-Copyright (C) 2009-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2009-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index f8e6510b1fdeaada59500b7239e534a1f8999d84..bd88e379e728ca5966bf9df089e5d05561d007d5 100644 (file)
@@ -21,9 +21,9 @@ syntax) and writes the converted image to an output file (\e dcmfile-out).
 \section dcmdjpls_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be converted
+dcmfile-in   DICOM input filename to be converted ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmdjpls_options OPTIONS
@@ -280,6 +280,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmdjpls_copyright COPYRIGHT
 
-Copyright (C) 2009-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2009-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 99c69c3d8bd64a11b4185bee4940c6a9fd6e411e..17e567bf5fc5fcef111cd66ee990e78f9effb8cc 100644 (file)
@@ -23,7 +23,7 @@ and RLE compressed DICOM images.
 \section dcml2pnm_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  DICOM input filename to be converted
+dcmfile-in  DICOM input filename to be converted ("-" for stdin)
 
 bitmap-out  output filename to be written (default: stdout)
 \endverbatim
@@ -396,10 +396,10 @@ image format:
 The following preferred interpolation algorithms can be selected using the
 \e --interpolate option:
 
-\li 1 = free scaling algorithm with interpolation from pbmplus toolkit
-\li 2 = free scaling algorithm with interpolation from c't magazine
-\li 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
-\li 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
+- 1 = free scaling algorithm with interpolation from pbmplus toolkit
+- 2 = free scaling algorithm with interpolation from c't magazine
+- 3 = magnification algorithm with bilinear interpolation from Eduard Stanescu
+- 4 = magnification algorithm with bicubic interpolation from Eduard Stanescu
 
 The \e --write-tiff option is only available when DCMTK has been configured
 and compiled with support for the external \b libtiff TIFF library.  The
@@ -497,6 +497,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcml2pnm_copyright COPYRIGHT
 
-Copyright (C) 2001-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2001-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 8c8cd52111a7613f51acd82c2180106a428ea6e8..b029e46c8838c98694f41c1dd7f132787f8da6b2 100644 (file)
@@ -479,7 +479,7 @@ JpegMarkerSegment* CreateJFIF(const JfifParameters* jfif)
        rgbyte.push_back((BYTE)jfif->Ythumb);
        if(jfif->Xthumb > 0)
        {
-               if(jfif->pdataThumbnail)
+               if(jfif->pdataThumbnail == NULL)
                        throw JlsException(InvalidJlsParameters);
 
                rgbyte.insert(rgbyte.end(), (BYTE*)jfif->pdataThumbnail, (BYTE*)jfif->pdataThumbnail+3*jfif->Xthumb*jfif->Ythumb
index ee5efc80108cab625292bea40851bb5f4c63841b..ac41b314328df1f31c21c85fef0504774e502e85 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2007-2022, OFFIS e.V.
+ *  Copyright (C) 2007-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -462,10 +462,23 @@ OFCondition DJLSEncoderBase::losslessRawEncode(
       // an image that is not supported by either the raw or the cooked encoder.
       result = EC_JLSUnsupportedImageType;
     }
+  }
 
+  if (result.good())
+  {
     // make sure that all the descriptive attributes have sensible values
     if ((columns < 1)||(rows < 1)||(samplesPerPixel < 1)) result = EC_JLSUnsupportedImageType;
+  }
 
+  if (result.good())
+  {
+    // we do not support JPEG-LS compression of YBR_FULL_422 images
+    if (photometricInterpretation == "YBR_FULL_422")
+      result = EC_JLSUnsupportedImageType;
+  }
+
+  if (result.good())
+  {
     // make sure that we have at least as many bytes of pixel data as we expect
     if (bytesAllocated * samplesPerPixel * columns * rows *
       OFstatic_cast(unsigned long,numberOfFrames) > length)
index 1e400019b44cdfcaf15e17c76a1f4b60403d9b17..d34eee071802b251238a1fc2e8777c9da721504c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013-2020, OFFIS e.V.
+ *  Copyright (C) 2013-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -41,9 +41,6 @@ static OFLogger dcmrecvLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APP
 static char rcsid[] = "$dcmtk: " OFFIS_CONSOLE_APPLICATION " v"
   OFFIS_DCMTK_VERSION " " OFFIS_DCMTK_RELEASEDATE " $";
 
-/* default application entity title */
-#define APPLICATIONTITLE "DCMRECV"
-
 
 /* exit codes for this command line tool */
 /* (common codes are defined in "ofexit.h" included from "ofconapp.h") */
@@ -80,8 +77,8 @@ int main(int argc, char *argv[])
 
     const char *opt_configFile = NULL;
     const char *opt_profileName = NULL;
-    const char *opt_aeTitle = APPLICATIONTITLE;
-    const char *opt_outputDirectory = ".";
+    const char *opt_aeTitle = NULL;                 // default: respond with called AE title
+    const char *opt_outputDirectory = ".";          // default: current directory
     const char *opt_filenameExtension = "";
 
     OFCmdUnsignedInt opt_port = 0;
@@ -91,7 +88,6 @@ int main(int argc, char *argv[])
     T_DIMSE_BlockingMode opt_blockingMode = DIMSE_BLOCKING;
 
     OFBool opt_showPresentationContexts = OFFalse;  // default: do not show presentation contexts in verbose mode
-    OFBool opt_useCalledAETitle = OFFalse;          // default: respond with specified application entity title
     OFBool opt_HostnameLookup = OFTrue;             // default: perform hostname lookup (for log output)
 
     DcmStorageSCP::E_DirectoryGenerationMode opt_directoryGeneration = DcmStorageSCP::DGM_NoSubdirectory;
@@ -116,19 +112,19 @@ int main(int argc, char *argv[])
         cmd.addOption("--config-file",         "-xf",  2, "[f]ilename, [p]rofile: string",
                                                           "use profile p from configuration file f");
       cmd.addSubGroup("application entity title:");
-        CONVERT_TO_STRING("set my AE title (default: " << opt_aeTitle << ")", optString1);
-        cmd.addOption("--aetitle",             "-aet", 1, "[a]etitle: string", optString1.c_str());
-        cmd.addOption("--use-called-aetitle",  "-uca",    "always respond with called AE title");
+        cmd.addOption("--use-called-aetitle",  "-uca",    "always respond with called AE title (default)");
+        cmd.addOption("--aetitle",             "-aet", 1, "[a]etitle: string",
+                                                          "set my AE title and check called AE title");
       cmd.addSubGroup("other network options:");
-        CONVERT_TO_STRING("[s]econds: integer (default: " << opt_acseTimeout << ")", optString2);
-        cmd.addOption("--acse-timeout",        "-ta",  1, optString2.c_str(),
+        CONVERT_TO_STRING("[s]econds: integer (default: " << opt_acseTimeout << ")", optString1);
+        cmd.addOption("--acse-timeout",        "-ta",  1, optString1.c_str(),
                                                           "timeout for ACSE messages");
         cmd.addOption("--dimse-timeout",       "-td",  1, "[s]econds: integer (default: unlimited)",
                                                           "timeout for DIMSE messages");
-        CONVERT_TO_STRING("[n]umber of bytes: integer (" << ASC_MINIMUMPDUSIZE << ".." << ASC_MAXIMUMPDUSIZE << ")", optString3);
-        CONVERT_TO_STRING("set max receive pdu to n bytes (default: " << opt_maxPDULength << ")", optString4);
-        cmd.addOption("--max-pdu",             "-pdu", 1, optString3.c_str(),
-                                                          optString4.c_str());
+        CONVERT_TO_STRING("[n]umber of bytes: integer (" << ASC_MINIMUMPDUSIZE << ".." << ASC_MAXIMUMPDUSIZE << ")", optString2);
+        CONVERT_TO_STRING("set max receive pdu to n bytes (default: " << opt_maxPDULength << ")", optString3);
+        cmd.addOption("--max-pdu",             "-pdu", 1, optString2.c_str(),
+                                                          optString3.c_str());
         cmd.addOption("--disable-host-lookup", "-dhl",    "disable hostname lookup");
 
     /* add TLS specific command line options if (and only if) we are compiling with OpenSSL */
@@ -136,8 +132,8 @@ int main(int argc, char *argv[])
 
     cmd.addGroup("output options:");
       cmd.addSubGroup("general:");
-        CONVERT_TO_STRING("[d]irectory: string (default: \"" << opt_outputDirectory << "\")", optString5);
-        cmd.addOption("--output-directory",    "-od",  1, optString5.c_str(),
+        CONVERT_TO_STRING("[d]irectory: string (default: \"" << opt_outputDirectory << "\")", optString4);
+        cmd.addOption("--output-directory",    "-od",  1, optString4.c_str(),
                                                           "write received objects to existing directory d");
       cmd.addSubGroup("subdirectory generation:");
         cmd.addOption("--no-subdir",           "-s",      "do not generate any subdirectories (default)");
@@ -200,12 +196,9 @@ int main(int argc, char *argv[])
 
         cmd.beginOptionBlock();
         if (cmd.findOption("--aetitle"))
-        {
             app.checkValue(cmd.getValue(opt_aeTitle));
-            opt_useCalledAETitle = OFFalse;
-        }
         if (cmd.findOption("--use-called-aetitle"))
-            opt_useCalledAETitle = OFTrue;
+            opt_aeTitle = NULL;
         cmd.endOptionBlock();
 
         if (cmd.findOption("--acse-timeout"))
@@ -282,13 +275,14 @@ int main(int argc, char *argv[])
 
     /* set general network parameters */
     storageSCP.setPort(OFstatic_cast(Uint16, opt_port));
-    storageSCP.setAETitle(opt_aeTitle);
+    if (opt_aeTitle != NULL)
+        storageSCP.setAETitle(opt_aeTitle);
     storageSCP.setMaxReceivePDULength(OFstatic_cast(Uint32, opt_maxPDULength));
     storageSCP.setACSETimeout(OFstatic_cast(Uint32, opt_acseTimeout));
     storageSCP.setDIMSETimeout(OFstatic_cast(Uint32, opt_dimseTimeout));
     storageSCP.setDIMSEBlockingMode(opt_blockingMode);
     storageSCP.setVerbosePCMode(opt_showPresentationContexts);
-    storageSCP.setRespondWithCalledAETitle(opt_useCalledAETitle);
+    storageSCP.setRespondWithCalledAETitle(opt_aeTitle == NULL);
     storageSCP.setHostLookupEnabled(opt_HostnameLookup);
     storageSCP.setDirectoryGenerationMode(opt_directoryGeneration);
     storageSCP.setFilenameGenerationMode(opt_filenameGeneration);
index d24277223bd10a7793605b72cff6406ab59df9fe..d988ac3cf28dd7d239479b901b0aaeab4b3d2ba3 100644 (file)
@@ -101,7 +101,14 @@ static const char* transferSyntaxes[] = {
       UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,
       UID_MPEG4StereoHighProfileLevel4_2TransferSyntax,
       UID_HEVCMainProfileLevel5_1TransferSyntax,
-      UID_HEVCMain10ProfileLevel5_1TransferSyntax
+      UID_HEVCMain10ProfileLevel5_1TransferSyntax,
+      UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax,
+      UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax,
+      UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax,
+      UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax,
+      UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax,
+      UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax,
+      UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax
 };
 
 // ********************************************
index 21ba62c280b3397853c9fa8a9cf15cfeda1cbca5..5dae4f16c692b1b9a321d7a96c4738b6dc6e4a40 100644 (file)
@@ -1010,7 +1010,7 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura
 
   const char* transferSyntaxes[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,  // 10
                                      NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,  // 20
-                                     NULL };                                                      // +1
+                                     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };            // +8
   int numTransferSyntaxes = 0;
 
   // try to receive an association. Here we either want to use blocking or
@@ -1287,25 +1287,32 @@ static OFCondition acceptAssociation(T_ASC_Network *net, DcmAssociationConfigura
         transferSyntaxes[6] = UID_JPEGLSLosslessTransferSyntax;
         transferSyntaxes[7] = UID_RLELosslessTransferSyntax;
         transferSyntaxes[8] = UID_MPEG2MainProfileAtMainLevelTransferSyntax;
-        transferSyntaxes[9] = UID_MPEG2MainProfileAtHighLevelTransferSyntax;
-        transferSyntaxes[10] = UID_MPEG4HighProfileLevel4_1TransferSyntax;
-        transferSyntaxes[11] = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax;
-        transferSyntaxes[12] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
-        transferSyntaxes[13] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
-        transferSyntaxes[14] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
-        transferSyntaxes[15] = UID_HEVCMainProfileLevel5_1TransferSyntax;
-        transferSyntaxes[16] = UID_HEVCMain10ProfileLevel5_1TransferSyntax;
-        transferSyntaxes[17] = UID_DeflatedExplicitVRLittleEndianTransferSyntax;
+        transferSyntaxes[9] = UID_FragmentableMPEG2MainProfileMainLevelTransferSyntax;
+        transferSyntaxes[10] = UID_MPEG2MainProfileAtHighLevelTransferSyntax;
+        transferSyntaxes[11] = UID_FragmentableMPEG2MainProfileHighLevelTransferSyntax;
+        transferSyntaxes[12] = UID_MPEG4HighProfileLevel4_1TransferSyntax;
+        transferSyntaxes[13] = UID_FragmentableMPEG4HighProfileLevel4_1TransferSyntax;
+        transferSyntaxes[14] = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax;
+        transferSyntaxes[15] = UID_FragmentableMPEG4BDcompatibleHighProfileLevel4_1TransferSyntax;
+        transferSyntaxes[16] = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+        transferSyntaxes[17] = UID_FragmentableMPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+        transferSyntaxes[18] = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+        transferSyntaxes[19] = UID_FragmentableMPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+        transferSyntaxes[20] = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
+        transferSyntaxes[21] = UID_FragmentableMPEG4StereoHighProfileLevel4_2TransferSyntax;
+        transferSyntaxes[22] = UID_HEVCMainProfileLevel5_1TransferSyntax;
+        transferSyntaxes[23] = UID_HEVCMain10ProfileLevel5_1TransferSyntax;
+        transferSyntaxes[24] = UID_DeflatedExplicitVRLittleEndianTransferSyntax;
         if (gLocalByteOrder == EBO_LittleEndian)
         {
-          transferSyntaxes[18] = UID_LittleEndianExplicitTransferSyntax;
-          transferSyntaxes[19] = UID_BigEndianExplicitTransferSyntax;
+          transferSyntaxes[25] = UID_LittleEndianExplicitTransferSyntax;
+          transferSyntaxes[26] = UID_BigEndianExplicitTransferSyntax;
         } else {
-          transferSyntaxes[18] = UID_BigEndianExplicitTransferSyntax;
-          transferSyntaxes[19] = UID_LittleEndianExplicitTransferSyntax;
+          transferSyntaxes[25] = UID_BigEndianExplicitTransferSyntax;
+          transferSyntaxes[26] = UID_LittleEndianExplicitTransferSyntax;
         }
-        transferSyntaxes[20] = UID_LittleEndianImplicitTransferSyntax;
-        numTransferSyntaxes = 21;
+        transferSyntaxes[27] = UID_LittleEndianImplicitTransferSyntax;
+        numTransferSyntaxes = 28;
       } else {
         /* We prefer explicit transfer syntaxes.
          * If we are running on a Little Endian machine we prefer
index bbf787e336aa3dfc7c858b28d2779f10e18412f7..4c351ff3bcb1d89347173b04a7a6ded140404b2a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2022, OFFIS e.V.
+ *  Copyright (C) 1996-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -105,10 +105,10 @@ static OFCmdUnsignedInt opt_inventStudyCount = 50;
 static OFCmdUnsignedInt opt_inventSeriesCount = 100;
 static OFBool opt_inventSOPInstanceInformation = OFFalse;
 static OFBool opt_correctUIDPadding = OFFalse;
-static OFString patientNamePrefix("OFFIS^TEST_PN_");   // PatientName is PN (maximum 16 chars)
-static OFString patientIDPrefix("PID_"); // PatientID is LO (maximum 64 chars)
-static OFString studyIDPrefix("SID_");   // StudyID is SH (maximum 16 chars)
-static OFString accessionNumberPrefix;   // AccessionNumber is SH (maximum 16 chars)
+static OFString patientNamePrefix("OFFIS^TEST_PN_");  // PatientName is PN (maximum 16 chars)
+static OFString patientIDPrefix("PID_");              // PatientID is LO (maximum 64 chars)
+static OFString studyIDPrefix("SID_");                // StudyID is SH (maximum 16 chars)
+static OFString accessionNumberPrefix;                // AccessionNumber is SH (maximum 16 chars)
 static const char *opt_configFile = NULL;
 static const char *opt_profileName = NULL;
 T_DIMSE_BlockingMode opt_blockMode = DIMSE_BLOCKING;
@@ -125,6 +125,9 @@ static T_ASC_UserIdentityNegotiationMode opt_identMode = ASC_USER_IDENTITY_NONE;
 static OFString opt_user;
 static OFString opt_password;
 static OFString opt_identFile;
+// Denotes whether we ask for an explicit server response for
+// our identity negotiation request and only continue if this
+// positive response is provided by the SCP.
 static OFBool opt_identResponse = OFFalse;
 
 static OFCondition
@@ -555,13 +558,13 @@ int main(int argc, char *argv[])
       if (cmd.findOption("--empty-password"))
       {
         app.checkDependence("--empty-password", "--user", opt_identMode == ASC_USER_IDENTITY_USER);
-        opt_password= "";
+        opt_password = "";
         opt_identMode = ASC_USER_IDENTITY_USER_PASSWORD;
       }
       cmd.endOptionBlock();
       if (cmd.findOption("--pos-response"))
       {
-         app.checkDependence("--pos-response", "--user, --kerberos or --saml", opt_identMode != ASC_USER_IDENTITY_NONE);
+         app.checkDependence("--pos-response", "--user, --kerberos, --saml or --jwt", opt_identMode != ASC_USER_IDENTITY_NONE);
          opt_identResponse = OFTrue;
       }
    }
@@ -780,9 +783,6 @@ int main(int argc, char *argv[])
       }
     }
 
-    /* dump the connection parameters if in debug mode*/
-    OFLOG_DEBUG(storescuLogger, ASC_dumpConnectionParameters(temp_str, assoc));
-
     /* dump the presentation contexts which have been accepted/refused */
     if (opt_showPresentationContexts)
       OFLOG_INFO(storescuLogger, "Association Parameters Negotiated:" << OFendl << ASC_dumpParameters(temp_str, params, ASC_ASSOC_AC));
@@ -1237,7 +1237,7 @@ progressCallback(void * /*callbackData*/,
   if (progress->state == DIMSE_StoreBegin)
   {
     OFString str;
-    OFLOG_DEBUG(storescuLogger, DIMSE_dumpMessage(str, *req, DIMSE_OUTGOING));
+    OFLOG_DEBUG(storescuLogger, DIMSE_dumpMessage(str, *req, DIMSE_OUTGOING /*, NULL, presID */));
   }
 
   // We can't use oflog for the pdu output, but we use a special logger for
@@ -1337,16 +1337,18 @@ storeSCU(T_ASC_Association *assoc, const char *fname)
     filexfer = EXS_DeflatedLittleEndianExplicit;
   }
 
-  if (filexfer.getXfer() != EXS_Unknown)
+  if (filexfer != EXS_Unknown)
     presID = ASC_findAcceptedPresentationContextID(assoc, sopClass, filexfer.getXferID());
   else
     presID = ASC_findAcceptedPresentationContextID(assoc, sopClass);
   if (presID == 0)
   {
-    const char *modalityName = dcmSOPClassUIDToModality(sopClass);
-    if (!modalityName) modalityName = dcmFindNameOfUID(sopClass);
-    if (!modalityName) modalityName = "unknown SOP class";
-    OFLOG_ERROR(storescuLogger, "No presentation context for: (" << modalityName << ") " << sopClass);
+    if (storescuLogger.isEnabledFor(OFLogger::ERROR_LOG_LEVEL))
+    {
+      const char *modalityName = dcmSOPClassUIDToModality(sopClass);
+      if (!modalityName) modalityName = dcmFindNameOfUID(sopClass, "unknown SOP class");
+      OFLOG_ERROR(storescuLogger, "No presentation context for: (" << modalityName << ") " << sopClass);
+    }
     renameFile(fname, ".bad");
     return DIMSE_NOVALIDPRESENTATIONCONTEXTID;
   }
@@ -1356,10 +1358,11 @@ storeSCU(T_ASC_Association *assoc, const char *fname)
   DcmXfer netTransfer(pc.acceptedTransferSyntax);
 
   /* if required, dump general information concerning transfer syntaxes */
-  if (storescuLogger.isEnabledFor(OFLogger::INFO_LOG_LEVEL))
+  if ((netTransfer != dcmff.getDataset()->getOriginalXfer()) &&
+    storescuLogger.isEnabledFor(OFLogger::INFO_LOG_LEVEL))
   {
-    DcmXfer fileTransfer(dcmff.getDataset()->getOriginalXfer());
-    OFLOG_INFO(storescuLogger, "Converting transfer syntax: " << fileTransfer.getXferName()
+    DcmXfer origTransfer(dcmff.getDataset()->getOriginalXfer());
+    OFLOG_INFO(storescuLogger, "Converting transfer syntax: " << origTransfer.getXferName()
       << " -> " << netTransfer.getXferName());
   }
 
@@ -1384,6 +1387,14 @@ storeSCU(T_ASC_Association *assoc, const char *fname)
   /* if required, dump some more general information */
   OFLOG_INFO(storescuLogger, "Sending Store Request (MsgID " << msgId << ", "
     << dcmSOPClassUIDToModality(sopClass, "OT") << ")");
+  /* the following is needed, because the presentation context ID is not shown otherwise */
+  if (storescuLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+  {
+    const char *sopClassName = dcmFindKeywordOfUID(sopClass, sopClass /*defaultValue*/);
+    const char *netXferName = dcmFindKeywordOfUID(netTransfer.getXferID(), netTransfer.getXferID() /*defaultValue*/);
+    OFLOG_DEBUG(storescuLogger, "  using Presentation Context ID " << OFstatic_cast(int, presID)
+      << " = " << sopClassName << " with " << netXferName << " transfer syntax");
+  }
 
   /* finally conduct transmission of data */
   cond = DIMSE_storeUser(assoc, presID, &req,
index 53080e94e1079bca0709fe173e2e05f94549bfe4..be875f8c04de5af2d5fa50ef0ad8646e970b88d1 100644 (file)
@@ -6,8 +6,9 @@ ASSOCIATION NEGOTIATION PROFILES AND CONFIGURATION FILES
   application, based on so-called "association negotiation profiles"
   which may be read from a configuration file.
 
-  This mechanism is currently enabled in the storescu and storescp
-  applications.
+  Originally, this mechanism was only enabled in the storescu and storescp
+  applications.  In the meantime, it is also used by other tools such as
+  dcmrecv and dcmqrscp.
 
 
 1. CONFIGURATION FILE FORMAT
@@ -31,6 +32,7 @@ ASSOCIATION NEGOTIATION PROFILES AND CONFIGURATION FILES
   The well-known "INI" syntax is extended by the definition of
   supersections which define a grouping for sections, using the
   following syntax:
+
   [[Supersection]]
 
   The content of the configuration file needs to establish a true tree
@@ -42,11 +44,13 @@ ASSOCIATION NEGOTIATION PROFILES AND CONFIGURATION FILES
 
   A configuration file for association negotiation profiles may contain
   the following supersections:
+
   [[TransferSyntaxes]]
   [[PresentationContexts]]
   [[Profiles]]
   [[SCPSCURoleSelection]]
   [[ExtendedNegotiation]]
+
   The first three supersections are mandatory, the others are optional.
 
 
@@ -89,6 +93,14 @@ On a big endian machine (Sparc, M68K, MIPS)
   - "LocalEndianExplicit" is interpreted as "BigEndianExplicit"
   - "OppositeEndianExplicit" is interpreted as "LittleEndianExplicit"
 
+Please note that the order of transfer syntaxes within a section might be
+significant.  For example, an implementation of a DICOM Storage SCP, such as
+storescp or dcmrecv, will use this order to determine which transfer syntax
+to prefer when multiple transfer syntaxes are offered by the SCU and are
+acceptable for the SCP.  The transfer syntax selection policy is to prefer
+the first transfer syntax that is acceptable, i.e. the one with the lowest
+number.
+
 
 2.2 PRESENTATION CONTEXTS
 
@@ -96,9 +108,9 @@ This supersection contains one or more sections with arbitrary
 user-defined but unique section names that are used as symbolic labels.
 Within each section, one or more key/value pairs are contained.  The key
 names are "PresentationContext1", "PresentationContext2" etc., in
-increasing order.  Each list must not contain more than 128 entries,
-due to the limitation of the DICOM network protocol to 128 presentation
-contexts per association.
+increasing order.  For an association requestor, each list must not
+contain more than 128 entries, due to the limitation of the DICOM network
+protocol to 128 presentation contexts per association.
 
 Each value consists of two parts, separated by a single backslash
 character ('\').  The first value denotes a DICOM SOP Class UID or
@@ -233,4 +245,4 @@ procedure can use exactly one of these profiles.
 
 Examples for association negotiation profiles that can be used
 with the storescu and storescp tools are provided with DCMTK, as
-"storescp.cfg" and "storescu.cfg" in the <etcdir> directory.
+"storescu.cfg" and "storescp.cfg" in the <etcdir> directory.
index aa9925581d0f40a55359d51a8017328c9710af64..dbec498ed0003533f1c2f8a437c8a25f72f880b1 100644 (file)
@@ -70,11 +70,11 @@ association negotiation profile from configuration file:
 
 application entity title:
 
-  -aet  --aetitle  [a]etitle: string
-          set my AE title (default: DCMRECV)
-
   -uca  --use-called-aetitle
-          always respond with called AE title
+          always respond with called AE title (default)
+
+  -aet  --aetitle  [a]etitle: string
+          set my AE title and check called AE title
 
 other network options:
 
@@ -139,18 +139,29 @@ certification authority:
 
 security profile:
 
+  +pg   --profile-8996
+          BCP 195 RFC 8996 TLS Profile (default)
+
+  +pm   --profile-8996-mod
+          Modified BCP 195 RFC 8996 TLS Profile
+
+          # only available if underlying TLS library supports
+          # all TLS features required for this profile
+
   +py   --profile-bcp195-nd
-          Non-downgrading BCP 195 TLS Profile (default)
+          Non-downgrading BCP 195 TLS Profile (retired)
 
   +px   --profile-bcp195
-          BCP 195 TLS Profile
+          BCP 195 TLS Profile (retired)
 
   +pz   --profile-bcp195-ex
-          Extended BCP 195 TLS Profile
+          Extended BCP 195 TLS Profile (retired)
 
   +pb   --profile-basic
           Basic TLS Secure Transport Connection Profile (retired)
 
+          # only available if underlying TLS library supports 3DES
+
   +pa   --profile-aes
           AES TLS Secure Transport Connection Profile (retired)
 
@@ -169,6 +180,14 @@ ciphersuite:
   +dp   --dhparam  [f]ilename: string
           read DH parameters for DH/DSS ciphersuites
 
+server name indication:
+
+        --no-sni
+          do not use SNI (default)
+
+        --expect-sni  [s]erver name: string
+          expect requests for server name s
+
 pseudo random generator:
 
   +rs   --seed  [f]ilename: string
@@ -458,6 +477,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmrecv_copyright COPYRIGHT
 
-Copyright (C) 2013-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2013-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index f847b92178bccb9dc3e580be4e2121cbc01b3e6f..547bb5b7925725ba78a54dbe0140d996d679b53c 100644 (file)
@@ -69,7 +69,7 @@ application entity titles:
 
 association negotiation debugging:
 
-  -pts  --propose-ts  [n]umber: integer (1..38)
+  -pts  --propose-ts  [n]umber: integer (1..45)
           propose n transfer syntaxes
 
   -ppc  --propose-pc  [n]umber: integer (1..128)
@@ -151,18 +151,29 @@ certification authority:
 
 security profile:
 
+  +pg   --profile-8996
+          BCP 195 RFC 8996 TLS Profile (default)
+
+  +pm   --profile-8996-mod
+          Modified BCP 195 RFC 8996 TLS Profile
+
+          # only available if underlying TLS library supports
+          # all TLS features required for this profile
+
   +py   --profile-bcp195-nd
-          Non-downgrading BCP 195 TLS Profile (default)
+          Non-downgrading BCP 195 TLS Profile (retired)
 
   +px   --profile-bcp195
-          BCP 195 TLS Profile
+          BCP 195 TLS Profile (retired)
 
   +pz   --profile-bcp195-ex
-          Extended BCP 195 TLS Profile
+          Extended BCP 195 TLS Profile (retired)
 
   +pb   --profile-basic
           Basic TLS Secure Transport Connection Profile (retired)
 
+          # only available if underlying TLS library supports 3DES
+
   +pa   --profile-aes
           AES TLS Secure Transport Connection Profile (retired)
 
@@ -178,6 +189,14 @@ ciphersuite:
   +cs   --cipher  [c]iphersuite name: string
           add ciphersuite to list of negotiated suites
 
+server name indication:
+
+        --no-sni
+          do not use SNI (default)
+
+        --request-sni  [s]erver name: string
+          request server name s
+
 pseudo random generator:
 
   +rs   --seed  [f]ilename: string
@@ -219,14 +238,64 @@ offline certificate verification:
 The \b echoscu application supports the following SOP Classes as an SCU:
 
 \verbatim
-VerificationSOPClass                1.2.840.10008.1.1
+VerificationSOPClass                                1.2.840.10008.1.1
+\endverbatim
+
+By default, the \b echoscu application will only propose this transfer syntax:
+
+\verbatim
+LittleEndianImplicitTransferSyntax                  1.2.840.10008.1.2
 \endverbatim
 
-Unless the \e --propose-ts option is used, the echoscu application will only
-propose the transfer syntax
+If the \e --propose-ts option is used, the following transfer syntaxes will
+also be proposed, depending on the numeric value "n" that is passed to this
+option:
 
 \verbatim
-LittleEndianImplicitTransferSyntax  1.2.840.10008.1.2
+LittleEndianExplicitTransferSyntax                  1.2.840.10008.1.2.1
+BigEndianExplicitTransferSyntax                     1.2.840.10008.1.2.2
+JPEGProcess1TransferSyntax                          1.2.840.10008.1.2.4.50
+JPEGProcess2_4TransferSyntax                        1.2.840.10008.1.2.4.51
+JPEGProcess3_5TransferSyntax                        1.2.840.10008.1.2.4.52
+JPEGProcess6_8TransferSyntax                        1.2.840.10008.1.2.4.53
+JPEGProcess7_9TransferSyntax                        1.2.840.10008.1.2.4.54
+JPEGProcess10_12TransferSyntax                      1.2.840.10008.1.2.4.55
+JPEGProcess11_13TransferSyntax                      1.2.840.10008.1.2.4.56
+JPEGProcess14TransferSyntax                         1.2.840.10008.1.2.4.57
+JPEGProcess15TransferSyntax                         1.2.840.10008.1.2.4.58
+JPEGProcess16_18TransferSyntax                      1.2.840.10008.1.2.4.59
+JPEGProcess17_19TransferSyntax                      1.2.840.10008.1.2.4.60
+JPEGProcess20_22TransferSyntax                      1.2.840.10008.1.2.4.61
+JPEGProcess21_23TransferSyntax                      1.2.840.10008.1.2.4.62
+JPEGProcess24_26TransferSyntax                      1.2.840.10008.1.2.4.63
+JPEGProcess25_27TransferSyntax                      1.2.840.10008.1.2.4.64
+JPEGProcess28TransferSyntax                         1.2.840.10008.1.2.4.65
+JPEGProcess29TransferSyntax                         1.2.840.10008.1.2.4.66
+JPEGProcess14SV1TransferSyntax                      1.2.840.10008.1.2.4.70
+RLELosslessTransferSyntax                           1.2.840.10008.1.2.5
+DeflatedExplicitVRLittleEndianTransferSyntax        1.2.840.10008.1.2.1.99
+JPEGLSLosslessTransferSyntax                        1.2.840.10008.1.2.4.80
+JPEGLSLossyTransferSyntax                           1.2.840.10008.1.2.4.81
+JPEG2000LosslessOnlyTransferSyntax                  1.2.840.10008.1.2.4.90
+JPEG2000TransferSyntax                              1.2.840.10008.1.2.4.91
+JPEG2000Part2MulticomponentImageComp.LosslessOnlyT. 1.2.840.10008.1.2.4.92
+JPEG2000Part2MulticomponentImageComp.TransferSyntax 1.2.804.10008.1.2.4.93
+MPEG2MainProfileAtMainLevelTransferSyntax           1.2.840.10008.1.2.4.100
+MPEG2MainProfileAtHighLevelTransferSyntax           1.2.840.10008.1.2.4.101
+MPEG4HighProfileLevel4_1TransferSyntax              1.2.840.10008.1.2.4.102
+MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax  1.2.840.10008.1.2.4.103
+MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax   1.2.840.10008.1.2.4.104
+MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax   1.2.840.10008.1.2.4.105
+MPEG4StereoHighProfileLevel4_2TransferSyntax        1.2.840.10008.1.2.4.106
+HEVCMainProfileLevel5_1TransferSyntax               1.2.840.10008.1.2.4.107
+HEVCMain10ProfileLevel5_1TransferSyntax             1.2.840.10008.1.2.4.108
+FragmentableMPEG2MainProfileMainLevelTransferSyntax 1.2.840.10008.1.2.4.100.1
+FragmentableMPEG2MainProfileHighLevelTransferSyntax 1.2.840.10008.1.2.4.101.1
+FragmentableMPEG4HighProfileLevel4_1TransferSyntax  1.2.840.10008.1.2.4.102.1
+FragmentableMPEG4BDcompatibleHighProfileLevel4_1Tr. 1.2.840.10008.1.2.4.103.1
+FragmentableMPEG4HighProfileLevel4_2_For2DVideoTr.S 1.2.840.10008.1.2.4.104.1
+FragmentableMPEG4HighProfileLevel4_2_For3DVideoTr.S 1.2.840.10008.1.2.4.105.1
+FragmentableMPEG4StereoHighProfileLevel4_2TransferS 1.2.840.10008.1.2.4.106.1
 \endverbatim
 
 \section echoscu_logging LOGGING
@@ -319,6 +388,6 @@ It is an error if no data dictionary can be loaded.
 
 \section echoscu_copyright COPYRIGHT
 
-Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index fb35b7f17d0cfb28099484944a7baf6df10fd2b4..da87996f632d08e25bcdd0bf7e9e37cfc5894f9a 100644 (file)
@@ -202,18 +202,29 @@ certification authority:
 
 security profile:
 
+  +pg   --profile-8996
+          BCP 195 RFC 8996 TLS Profile (default)
+
+  +pm   --profile-8996-mod
+          Modified BCP 195 RFC 8996 TLS Profile
+
+          # only available if underlying TLS library supports
+          # all TLS features required for this profile
+
   +py   --profile-bcp195-nd
-          Non-downgrading BCP 195 TLS Profile (default)
+          Non-downgrading BCP 195 TLS Profile (retired)
 
   +px   --profile-bcp195
-          BCP 195 TLS Profile
+          BCP 195 TLS Profile (retired)
 
   +pz   --profile-bcp195-ex
-          Extended BCP 195 TLS Profile
+          Extended BCP 195 TLS Profile (retired)
 
   +pb   --profile-basic
           Basic TLS Secure Transport Connection Profile (retired)
 
+          # only available if underlying TLS library supports 3DES
+
   +pa   --profile-aes
           AES TLS Secure Transport Connection Profile (retired)
 
@@ -229,6 +240,14 @@ ciphersuite:
   +cs   --cipher  [c]iphersuite name: string
           add ciphersuite to list of negotiated suites
 
+server name indication:
+
+        --no-sni
+          do not use SNI (default)
+
+        --request-sni  [s]erver name: string
+          request server name s
+
 pseudo random generator:
 
   +rs   --seed  [f]ilename: string
@@ -465,6 +484,6 @@ It is an error if no data dictionary can be loaded.
 
 \section findscu_copyright COPYRIGHT
 
-Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index be9057d90f64e406fc8f193e21b47cca777bfb7f..7e63f772426fe053f470e51c26db474ed34e4cec 100644 (file)
@@ -455,6 +455,7 @@ RETIRED_NuclearMedicineImageStorage                  1.2.840.10008.5.1.4.1.1.5
 RETIRED_UltrasoundImageStorage                       1.2.840.10008.5.1.4.1.1.6
 UltrasoundImageStorage                               1.2.840.10008.5.1.4.1.1.6.1
 EnhancedUSVolumeStorage                              1.2.840.10008.5.1.4.1.1.6.2
+PhotoacousticImageStorage                            1.2.840.10008.5.1.4.1.1.6.3
 SecondaryCaptureImageStorage                         1.2.840.10008.5.1.4.1.1.7
 MultiframeSingleBitSecondaryCaptureImageStorage      1.2.840.10008.5.1.4.1.1.7.1
 MultiframeGrayscaleByteSecondaryCaptureImageStorage  1.2.840.10008.5.1.4.1.1.7.2
@@ -466,6 +467,7 @@ DRAFT_WaveformStorage                                1.2.840.10008.5.1.4.1.1.9.1
 TwelveLeadECGWaveformStorage                         1.2.840.10008.5.1.4.1.1.9.1.1
 GeneralECGWaveformStorage                            1.2.840.10008.5.1.4.1.1.9.1.2
 AmbulatoryECGWaveformStorage                         1.2.840.10008.5.1.4.1.1.9.1.3
+General32BitECGWaveformStorage                       1.2.840.10008.5.1.4.1.1.9.1.4
 HemodynamicWaveformStorage                           1.2.840.10008.5.1.4.1.1.9.2.1
 CardiacElectrophysiologyWaveformStorage              1.2.840.10008.5.1.4.1.1.9.3.1
 BasicVoiceAudioWaveformStorage                       1.2.840.10008.5.1.4.1.1.9.4.1
@@ -491,6 +493,7 @@ AdvancedBlendingPresentationStateStorage             1.2.840.10008.5.1.4.1.1.11.
 VolumeRenderingVolumetricPresentationStateStorage    1.2.840.10008.5.1.4.1.1.11.9
 SegmentedVolumeRenderingVolumetricPres.StateStorage  1.2.840.10008.5.1.4.1.1.11.10
 MultipleVolumeRenderingVolumetricPres.StateStorage   1.2.840.10008.5.1.4.1.1.11.11
+VariableModalityLUTSoftcopyPresentationStateStorage  1.2.840.10008.5.1.4.1.1.11.12
 XRayAngiographicImageStorage                         1.2.840.10008.5.1.4.1.1.12.1
 EnhancedXAImageStorage                               1.2.840.10008.5.1.4.1.1.12.1.1
 XRayRadiofluoroscopicImageStorage                    1.2.840.10008.5.1.4.1.1.12.2
@@ -605,6 +608,9 @@ CArmPhotonElectronRadiationRecordStorage             1.2.840.10008.5.1.4.1.1.481
 RoboticRadiationRecordStorage                        1.2.840.10008.5.1.4.1.1.481.20
 RTRadiationSetDeliveryInstructionStorage             1.2.840.10008.5.1.4.1.1.481.21
 RTTreatmentPreparationStorage                        1.2.840.10008.5.1.4.1.1.481.22
+EnhancedRTImageStorage                               1.2.840.10008.5.1.4.1.1.481.23
+EnhancedContinuousRTImageStorage                     1.2.840.10008.5.1.4.1.1.481.24
+RTPatientPositionAcquisitionInstructionStorage       1.2.840.10008.5.1.4.1.1.481.25
 DICOS_CTImageStorage                                 1.2.840.10008.5.1.4.1.1.501.1
 DICOS_DigitalXRayImageStorageForPresentation         1.2.840.10008.5.1.4.1.1.501.2.1
 DICOS_DigitalXRayImageStorageForProcessing           1.2.840.10008.5.1.4.1.1.501.2.2
@@ -786,6 +792,6 @@ It is an error if no data dictionary can be loaded.
 
 \section movescu_copyright COPYRIGHT
 
-Copyright (C) 1994-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1994-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index c998d13eb72201a2faf017b126e7db76b88593f6..7106ed2c4a30ae162220aee340378e672dab7526 100644 (file)
@@ -259,18 +259,29 @@ certification authority:
 
 security profile:
 
+  +pg   --profile-8996
+          BCP 195 RFC 8996 TLS Profile (default)
+
+  +pm   --profile-8996-mod
+          Modified BCP 195 RFC 8996 TLS Profile
+
+          # only available if underlying TLS library supports
+          # all TLS features required for this profile
+
   +py   --profile-bcp195-nd
-          Non-downgrading BCP 195 TLS Profile (default)
+          Non-downgrading BCP 195 TLS Profile (retired)
 
   +px   --profile-bcp195
-          BCP 195 TLS Profile
+          BCP 195 TLS Profile (retired)
 
   +pz   --profile-bcp195-ex
-          Extended BCP 195 TLS Profile
+          Extended BCP 195 TLS Profile (retired)
 
   +pb   --profile-basic
           Basic TLS Secure Transport Connection Profile (retired)
 
+          # only available if underlying TLS library supports 3DES
+
   +pa   --profile-aes
           AES TLS Secure Transport Connection Profile (retired)
 
@@ -289,6 +300,14 @@ ciphersuite:
   +dp   --dhparam  [f]ilename: string
           read DH parameters for DH/DSS ciphersuites
 
+server name indication:
+
+        --no-sni
+          do not use SNI (default)
+
+        --expect-sni  [s]erver name: string
+          expect requests for server name s
+
 pseudo random generator:
 
   +rs   --seed  [f]ilename: string
@@ -536,15 +555,19 @@ The command line to be executed is passed to this option as a parameter.  The
 specified command line may contain a number of placeholders which will be
 replaced at run time:
 
-\li \b \#p: complete path to the output directory into which the last DICOM
-            object was stored (not available with option \e --ignore though)
-\li \b \#f: filename of the current output file (not available with option
-            \e --ignore though)
-\li \b \#a: calling application entity title of the peer Storage SCU
-\li \b \#c: called application entity title used by the peer Storage SCU to
-            address \b storescp
-\li \b \#r: calling presentation address, i.e. hostname or IP address of the
-            peer Storage SCU
+- \b \#p: complete path to the output directory into which the last DICOM
+          object was stored (not available with option \e --ignore though)
+
+- \b \#f: filename of the current output file (not available with option
+          \e --ignore though)
+
+- \b \#a: calling application entity title of the peer Storage SCU
+
+- \b \#c: called application entity title used by the peer Storage SCU to
+          address \b storescp
+
+- \b \#r: calling presentation address, i.e. hostname or IP address of the
+          peer Storage SCU
 
 The specified command line is executed as a separate process, so that the
 execution of \b storescp will not be held back.  This behavior can be influenced
@@ -629,6 +652,7 @@ RETIRED_NuclearMedicineImageStorage                  1.2.840.10008.5.1.4.1.1.5
 RETIRED_UltrasoundImageStorage                       1.2.840.10008.5.1.4.1.1.6
 UltrasoundImageStorage                               1.2.840.10008.5.1.4.1.1.6.1
 EnhancedUSVolumeStorage                              1.2.840.10008.5.1.4.1.1.6.2
+PhotoacousticImageStorage                            1.2.840.10008.5.1.4.1.1.6.3
 SecondaryCaptureImageStorage                         1.2.840.10008.5.1.4.1.1.7
 MultiframeSingleBitSecondaryCaptureImageStorage      1.2.840.10008.5.1.4.1.1.7.1
 MultiframeGrayscaleByteSecondaryCaptureImageStorage  1.2.840.10008.5.1.4.1.1.7.2
@@ -640,6 +664,7 @@ DRAFT_WaveformStorage                                1.2.840.10008.5.1.4.1.1.9.1
 TwelveLeadECGWaveformStorage                         1.2.840.10008.5.1.4.1.1.9.1.1
 GeneralECGWaveformStorage                            1.2.840.10008.5.1.4.1.1.9.1.2
 AmbulatoryECGWaveformStorage                         1.2.840.10008.5.1.4.1.1.9.1.3
+General32BitECGWaveformStorage                       1.2.840.10008.5.1.4.1.1.9.1.4
 HemodynamicWaveformStorage                           1.2.840.10008.5.1.4.1.1.9.2.1
 CardiacElectrophysiologyWaveformStorage              1.2.840.10008.5.1.4.1.1.9.3.1
 BasicVoiceAudioWaveformStorage                       1.2.840.10008.5.1.4.1.1.9.4.1
@@ -665,6 +690,7 @@ AdvancedBlendingPresentationStateStorage             1.2.840.10008.5.1.4.1.1.11.
 VolumeRenderingVolumetricPresentationStateStorage    1.2.840.10008.5.1.4.1.1.11.9
 SegmentedVolumeRenderingVolumetricPres.StateStorage  1.2.840.10008.5.1.4.1.1.11.10
 MultipleVolumeRenderingVolumetricPres.StateStorage   1.2.840.10008.5.1.4.1.1.11.11
+VariableModalityLUTSoftcopyPresentationStateStorage  1.2.840.10008.5.1.4.1.1.11.12
 XRayAngiographicImageStorage                         1.2.840.10008.5.1.4.1.1.12.1
 EnhancedXAImageStorage                               1.2.840.10008.5.1.4.1.1.12.1.1
 XRayRadiofluoroscopicImageStorage                    1.2.840.10008.5.1.4.1.1.12.2
@@ -779,6 +805,9 @@ CArmPhotonElectronRadiationRecordStorage             1.2.840.10008.5.1.4.1.1.481
 RoboticRadiationRecordStorage                        1.2.840.10008.5.1.4.1.1.481.20
 RTRadiationSetDeliveryInstructionStorage             1.2.840.10008.5.1.4.1.1.481.21
 RTTreatmentPreparationStorage                        1.2.840.10008.5.1.4.1.1.481.22
+EnhancedRTImageStorage                               1.2.840.10008.5.1.4.1.1.481.23
+EnhancedContinuousRTImageStorage                     1.2.840.10008.5.1.4.1.1.481.24
+RTPatientPositionAcquisitionInstructionStorage       1.2.840.10008.5.1.4.1.1.481.25
 DICOS_CTImageStorage                                 1.2.840.10008.5.1.4.1.1.501.1
 DICOS_DigitalXRayImageStorageForPresentation         1.2.840.10008.5.1.4.1.1.501.2.1
 DICOS_DigitalXRayImageStorageForProcessing           1.2.840.10008.5.1.4.1.1.501.2.2
@@ -823,19 +852,28 @@ JPEGLSLossyTransferSyntax                            1.2.840.10008.1.2.4.81
 JPEG2000LosslessOnlyTransferSyntax                   1.2.840.10008.1.2.4.90
 JPEG2000TransferSyntax                               1.2.840.10008.1.2.4.91
 MPEG2MainProfileAtMainLevelTransferSyntax            1.2.840.10008.1.2.4.100
+FragmentableMPEG2MainProfile/MainLevelTransferSyntax 1.2.840.10008.1.2.4.100.1
 MPEG2MainProfileAtHighLevelTransferSyntax            1.2.840.10008.1.2.4.101
+FragmentableMPEG2MainProfil/tHighLevelTransferSyntax 1.2.840.10008.1.2.4.101.1
 MPEG4HighProfileLevel4_1TransferSyntax               1.2.840.10008.1.2.4.102
+FragmentableMPEG4HighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.102.1
 MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax   1.2.840.10008.1.2.4.103
+FragmentableMPEG4BDcompatibleHighProfileLevel4_1T.S. 1.2.840.10008.1.2.4.103.1
 MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax    1.2.840.10008.1.2.4.104
+FragmentableMPEG4HighProfileLevel4_2_For2DVideoTr.S. 1.2.840.10008.1.2.4.104.1
 MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax    1.2.840.10008.1.2.4.105
+FragmentableMPEG4HighProfileLevel4_2_For3DVideoTr.S. 1.2.840.10008.1.2.4.105.1
 MPEG4StereoHighProfileLevel4_2TransferSyntax         1.2.840.10008.1.2.4.106
+FragmentableMPEG4StereoHighProfileLevel4_2TransferS. 1.2.840.10008.1.2.4.106.1
 HEVCMainProfileLevel5_1TransferSyntax                1.2.840.10008.1.2.4.107
 HEVCMain10ProfileLevel5_1TransferSyntax              1.2.840.10008.1.2.4.108
 RLELosslessTransferSyntax                            1.2.840.10008.1.2.5
 \endverbatim
 
 Additional Storage SOP Classes and Transfer Syntaxes can be used with the
-so-called "association negotiation profiles" (see below).
+so-called "association negotiation profiles" (see below).  This could be both
+Private Storage SOP Classes and Standard Storage SOP Classes that do not fit
+into the PATIENT-STUDY-SERIES-INSTANCE information model.
 
 The \b storescp application does not support extended negotiation by default.
 However, using an appropriate association negotiation profile (see below)
@@ -951,6 +989,6 @@ It is an error if no data dictionary can be loaded.
 
 \section storescp_copyright COPYRIGHT
 
-Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 7e0151b0e54b7491efc1927256c03240d025c871..288cc7738ae9cab316f10997425532d280e8bb2b 100644 (file)
@@ -341,18 +341,29 @@ certification authority:
 
 security profile:
 
+  +pg   --profile-8996
+          BCP 195 RFC 8996 TLS Profile (default)
+
+  +pm   --profile-8996-mod
+          Modified BCP 195 RFC 8996 TLS Profile
+
+          # only available if underlying TLS library supports
+          # all TLS features required for this profile
+
   +py   --profile-bcp195-nd
-          Non-downgrading BCP 195 TLS Profile (default)
+          Non-downgrading BCP 195 TLS Profile (retired)
 
   +px   --profile-bcp195
-          BCP 195 TLS Profile
+          BCP 195 TLS Profile (retired)
 
   +pz   --profile-bcp195-ex
-          Extended BCP 195 TLS Profile
+          Extended BCP 195 TLS Profile (retired)
 
   +pb   --profile-basic
           Basic TLS Secure Transport Connection Profile (retired)
 
+          # only available if underlying TLS library supports 3DES
+
   +pa   --profile-aes
           AES TLS Secure Transport Connection Profile (retired)
 
@@ -368,6 +379,14 @@ ciphersuite:
   +cs   --cipher  [c]iphersuite name: string
           add ciphersuite to list of negotiated suites
 
+server name indication:
+
+        --no-sni
+          do not use SNI (default)
+
+        --request-sni  [s]erver name: string
+          request server name s
+
 pseudo random generator:
 
   +rs   --seed  [f]ilename: string
@@ -522,6 +541,19 @@ negotiation profiles" which may be read from a configuration file.
 The format and semantics of this configuration file are documented in
 \e asconfig.txt.
 
+\subsection storescu_userid User Identity Negotiation
+
+When specifying user name and/or password using options \e --user and
+\-e --password, the value has to be provided in UTF-8 encoding.
+
+If the option \e --pos-response is used, the SCP is asked to explicitly
+respond, i.e. acknowledge, the user credentials provided in the \b storescu
+request.  Otherwise, if no such response is sent, \b storescu will not
+continue but instead abort the connection.  Since User Identity Negotiation
+is an optional feature that has been introduced later into the standard,
+many SCPs will not check the user identity provided and therefore will not
+provide a user identity response at all.
+
 \section storescu_logging LOGGING
 
 The level of logging output of the various command line tools and underlying
@@ -590,6 +622,6 @@ It is an error if no data dictionary can be loaded.
 
 \section storescu_copyright COPYRIGHT
 
-Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 4036e4aab8aeb76c8220364add7dcae1c9782dac..31f3125dad46051da9e6defd62b46a1c1b88d834 100644 (file)
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2003-2022, OFFIS e.V.
+#  Copyright (C) 2003-2023, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
 #  Author:  Marco Eichelberg, Joerg Riesmeier
 #
 #  Purpose: Sample configuration file for storescp
+#           (see "asconfig.txt" for documentation)
 #
 
 # ============================================================================
 [[TransferSyntaxes]]
 # ============================================================================
+#
+# Please note that the Storage SCP will prefer the first entry in the selected
+# list of transfer syntaxes that is acceptable, i.e. that it matches one of the
+# transfer syntaxes proposed by the Storage SCU.
+#
 
 [Uncompressed]
 TransferSyntax1  = LocalEndianExplicit
@@ -64,12 +70,19 @@ TransferSyntax29 = MPEG4BDcompatibleHighProfile/Level4.1
 TransferSyntax30 = MPEG4HighProfile/Level4.2For2DVideo
 TransferSyntax31 = MPEG4HighProfile/Level4.2For3DVideo
 TransferSyntax32 = MPEG4StereoHighProfile/Level4.2
-TransferSyntax33 = HEVCMainProfile/Level5.1
-TransferSyntax34 = HEVCMain10Profile/Level5.1
-TransferSyntax35 = DeflatedLittleEndianExplicit
-TransferSyntax36 = LocalEndianExplicit
-TransferSyntax37 = OppositeEndianExplicit
-TransferSyntax38 = LittleEndianImplicit
+TransferSyntax33 = FragmentableMPEG2MainProfile/MainLevel
+TransferSyntax34 = FragmentableMPEG2MainProfile/HighLevel
+TransferSyntax35 = FragmentableMPEG4HighProfile/Level4.1
+TransferSyntax36 = FragmentableMPEG4BDcompatibleHighProfile/Level4.1
+TransferSyntax37 = FragmentableMPEG4HighProfile/Level4.2For2DVideo
+TransferSyntax38 = FragmentableMPEG4HighProfile/Level4.2For3DVideo
+TransferSyntax39 = FragmentableMPEG4StereoHighProfile/Level4.2
+TransferSyntax40 = HEVCMainProfile/Level5.1
+TransferSyntax41 = HEVCMain10Profile/Level5.1
+TransferSyntax42 = DeflatedLittleEndianExplicit
+TransferSyntax43 = LocalEndianExplicit
+TransferSyntax44 = OppositeEndianExplicit
+TransferSyntax45 = LittleEndianImplicit
 
 # ============================================================================
 [[PresentationContexts]]
@@ -97,204 +110,213 @@ PresentationContext11  = DigitalMammographyXRayImageStorageForPresentation\AnyTr
 PresentationContext12  = DigitalMammographyXRayImageStorageForProcessing\AnyTransferSyntax
 PresentationContext13  = DigitalXRayImageStorageForPresentation\AnyTransferSyntax
 PresentationContext14  = DigitalXRayImageStorageForProcessing\AnyTransferSyntax
-PresentationContext15  = EnhancedCTImageStorage\AnyTransferSyntax
-PresentationContext16  = EnhancedMRColorImageStorage\AnyTransferSyntax
-PresentationContext17  = EnhancedMRImageStorage\AnyTransferSyntax
-PresentationContext18  = EnhancedPETImageStorage\AnyTransferSyntax
-PresentationContext19  = EnhancedUSVolumeStorage\AnyTransferSyntax
-PresentationContext20  = EnhancedXAImageStorage\AnyTransferSyntax
-PresentationContext21  = EnhancedXRFImageStorage\AnyTransferSyntax
-PresentationContext22  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax
-PresentationContext23  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax
-PresentationContext24  = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax
-PresentationContext25  = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax
-PresentationContext26  = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax
-PresentationContext27  = MRImageStorage\AnyTransferSyntax
-PresentationContext28  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext29  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext30  = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext31  = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext32  = NuclearMedicineImageStorage\AnyTransferSyntax
-PresentationContext33  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax
-PresentationContext34  = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax
-PresentationContext35  = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax
-PresentationContext36  = OphthalmicThicknessMapStorage\AnyTransferSyntax
-PresentationContext37  = OphthalmicTomographyImageStorage\AnyTransferSyntax
-PresentationContext38  = PositronEmissionTomographyImageStorage\AnyTransferSyntax
-PresentationContext39  = RTImageStorage\AnyTransferSyntax
-PresentationContext40  = SecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext41  = UltrasoundImageStorage\AnyTransferSyntax
-PresentationContext42  = UltrasoundMultiframeImageStorage\AnyTransferSyntax
-PresentationContext43  = VLEndoscopicImageStorage\AnyTransferSyntax
-PresentationContext44  = VLMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext45  = VLPhotographicImageStorage\AnyTransferSyntax
-PresentationContext46  = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext47  = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax
-PresentationContext48  = VideoEndoscopicImageStorage\AnyTransferSyntax
-PresentationContext49  = VideoMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext50  = VideoPhotographicImageStorage\AnyTransferSyntax
-PresentationContext51  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax
-PresentationContext52  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax
-PresentationContext53  = XRay3DAngiographicImageStorage\AnyTransferSyntax
-PresentationContext54  = XRay3DCraniofacialImageStorage\AnyTransferSyntax
-PresentationContext55  = XRayAngiographicImageStorage\AnyTransferSyntax
-PresentationContext56  = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax
+PresentationContext15  = EnhancedContinuousRTImageStorage\AnyTransferSyntax
+PresentationContext16  = EnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext17  = EnhancedMRColorImageStorage\AnyTransferSyntax
+PresentationContext18  = EnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext19  = EnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext20  = EnhancedRTImageStorage\AnyTransferSyntax
+PresentationContext21  = EnhancedUSVolumeStorage\AnyTransferSyntax
+PresentationContext22  = EnhancedXAImageStorage\AnyTransferSyntax
+PresentationContext23  = EnhancedXRFImageStorage\AnyTransferSyntax
+PresentationContext24  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax
+PresentationContext25  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax
+PresentationContext26  = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext27  = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext28  = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext29  = MRImageStorage\AnyTransferSyntax
+PresentationContext30  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext31  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext32  = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext33  = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext34  = NuclearMedicineImageStorage\AnyTransferSyntax
+PresentationContext35  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax
+PresentationContext36  = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax
+PresentationContext37  = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax
+PresentationContext38  = OphthalmicThicknessMapStorage\AnyTransferSyntax
+PresentationContext39  = OphthalmicTomographyImageStorage\AnyTransferSyntax
+PresentationContext40  = PhotoacousticImageStorage\AnyTransferSyntax
+PresentationContext41  = PositronEmissionTomographyImageStorage\AnyTransferSyntax
+PresentationContext42  = RTImageStorage\AnyTransferSyntax
+PresentationContext43  = SecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext44  = UltrasoundImageStorage\AnyTransferSyntax
+PresentationContext45  = UltrasoundMultiframeImageStorage\AnyTransferSyntax
+PresentationContext46  = VLEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext47  = VLMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext48  = VLPhotographicImageStorage\AnyTransferSyntax
+PresentationContext49  = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext50  = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax
+PresentationContext51  = VideoEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext52  = VideoMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext53  = VideoPhotographicImageStorage\AnyTransferSyntax
+PresentationContext54  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax
+PresentationContext55  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax
+PresentationContext56  = XRay3DAngiographicImageStorage\AnyTransferSyntax
+PresentationContext57  = XRay3DCraniofacialImageStorage\AnyTransferSyntax
+PresentationContext58  = XRayAngiographicImageStorage\AnyTransferSyntax
+PresentationContext59  = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax
 #
 # retired image SOP classes
 #
-PresentationContext57  = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax
-PresentationContext58  = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax
-PresentationContext59  = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax
-PresentationContext60  = RETIRED_UltrasoundImageStorage\AnyTransferSyntax
-PresentationContext61  = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax
-PresentationContext62  = RETIRED_VLImageStorage\AnyTransferSyntax
-PresentationContext63  = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax
-PresentationContext64  = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax
+PresentationContext60  = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax
+PresentationContext61  = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax
+PresentationContext62  = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax
+PresentationContext63  = RETIRED_UltrasoundImageStorage\AnyTransferSyntax
+PresentationContext64  = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax
+PresentationContext65  = RETIRED_VLImageStorage\AnyTransferSyntax
+PresentationContext66  = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax
+PresentationContext67  = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax
 #
 # the following presentation contexts are for non-image SOP classes
+# (including some that do not fit into the PATIENT-STUDY-SERIES-INSTANCE model)
 #
-PresentationContext65  = AcquisitionContextSRStorage\UncompressedOrZlib
-PresentationContext66  = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib
-PresentationContext67  = AmbulatoryECGWaveformStorage\UncompressedOrZlib
-PresentationContext68  = ArterialPulseWaveformStorage\UncompressedOrZlib
-PresentationContext69  = AutorefractionMeasurementsStorage\UncompressedOrZlib
-PresentationContext70  = BasicStructuredDisplayStorage\UncompressedOrZlib
-PresentationContext71  = BasicTextSRStorage\UncompressedOrZlib
-PresentationContext72  = BasicVoiceAudioWaveformStorage\UncompressedOrZlib
-PresentationContext73  = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext74  = BodyPositionWaveformStorage\UncompressedOrZlib
-PresentationContext75  = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib
-PresentationContext76  = CArmPhotonElectronRadiationStorage\UncompressedOrZlib
-PresentationContext77  = CTDefinedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext78  = CTPerformedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext79  = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib
-PresentationContext80  = ChestCADSRStorage\UncompressedOrZlib
-PresentationContext81  = ColonCADSRStorage\UncompressedOrZlib
-PresentationContext82  = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext83  = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext84  = Comprehensive3DSRStorage\UncompressedOrZlib
-PresentationContext85  = ComprehensiveSRStorage\UncompressedOrZlib
-PresentationContext86  = ContentAssessmentResultsStorage\UncompressedOrZlib
-PresentationContext87  = DeformableSpatialRegistrationStorage\UncompressedOrZlib
-PresentationContext88  = ElectromyogramWaveformStorage\UncompressedOrZlib
-PresentationContext89  = ElectrooculogramWaveformStorage\UncompressedOrZlib
-PresentationContext90  = EncapsulatedCDAStorage\UncompressedOrZlib
-PresentationContext91  = EncapsulatedMTLStorage\UncompressedOrZlib
-PresentationContext92  = EncapsulatedOBJStorage\UncompressedOrZlib
-PresentationContext93  = EncapsulatedPDFStorage\UncompressedOrZlib
-PresentationContext94  = EncapsulatedSTLStorage\UncompressedOrZlib
-PresentationContext95  = EnhancedSRStorage\UncompressedOrZlib
-PresentationContext96  = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext97  = ExtensibleSRStorage\UncompressedOrZlib
-PresentationContext98  = GeneralAudioWaveformStorage\UncompressedOrZlib
-PresentationContext99  = GeneralECGWaveformStorage\UncompressedOrZlib
-PresentationContext100 = GenericImplantTemplateStorage\UncompressedOrZlib
-PresentationContext101 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext102 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext103 = HangingProtocolStorage\UncompressedOrZlib
-PresentationContext104 = HemodynamicWaveformStorage\UncompressedOrZlib
-PresentationContext105 = ImplantAssemblyTemplateStorage\UncompressedOrZlib
-PresentationContext106 = ImplantTemplateGroupStorage\UncompressedOrZlib
-PresentationContext107 = ImplantationPlanSRStorage\UncompressedOrZlib
-PresentationContext108 = IntraocularLensCalculationsStorage\UncompressedOrZlib
-PresentationContext109 = KeratometryMeasurementsStorage\UncompressedOrZlib
-PresentationContext110 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib
-PresentationContext111 = LensometryMeasurementsStorage\UncompressedOrZlib
-PresentationContext112 = MRSpectroscopyStorage\UncompressedOrZlib
-PresentationContext113 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib
-PresentationContext114 = MammographyCADSRStorage\UncompressedOrZlib
-PresentationContext115 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib
-PresentationContext116 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib
-PresentationContext117 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext118 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib
-PresentationContext119 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib
-PresentationContext120 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib
-PresentationContext121 = ParametricMapStorage\UncompressedOrZlib
-PresentationContext122 = PatientRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext123 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib
-PresentationContext124 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib
-PresentationContext125 = ProcedureLogStorage\UncompressedOrZlib
-PresentationContext126 = ProtocolApprovalStorage\UncompressedOrZlib
-PresentationContext127 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext128 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext129 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext130 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext131 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext132 = RTDoseStorage\UncompressedOrZlib
-PresentationContext133 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext134 = RTIonPlanStorage\UncompressedOrZlib
-PresentationContext135 = RTPhysicianIntentStorage\UncompressedOrZlib
-PresentationContext136 = RTPlanStorage\UncompressedOrZlib
-PresentationContext137 = RTRadiationRecordSetStorage\UncompressedOrZlib
-PresentationContext138 = RTRadiationSalvageRecordStorage\UncompressedOrZlib
-PresentationContext139 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext140 = RTRadiationSetStorage\UncompressedOrZlib
-PresentationContext141 = RTSegmentAnnotationStorage\UncompressedOrZlib
-PresentationContext142 = RTStructureSetStorage\UncompressedOrZlib
-PresentationContext143 = RTTreatmentPreparationStorage\UncompressedOrZlib
-PresentationContext144 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib
-PresentationContext145 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext146 = RawDataStorage\UncompressedOrZlib
-PresentationContext147 = RealWorldValueMappingStorage\UncompressedOrZlib
-PresentationContext148 = RespiratoryWaveformStorage\UncompressedOrZlib
-PresentationContext149 = RoboticArmRadiationStorage\UncompressedOrZlib
-PresentationContext150 = RoboticRadiationRecordStorage\UncompressedOrZlib
-PresentationContext151 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib
-PresentationContext152 = SegmentationStorage\UncompressedOrZlib
-PresentationContext153 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext154 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib
-PresentationContext155 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib
-PresentationContext156 = SpatialFiducialsStorage\UncompressedOrZlib
-PresentationContext157 = SpatialRegistrationStorage\UncompressedOrZlib
-PresentationContext158 = SpectaclePrescriptionReportStorage\UncompressedOrZlib
-PresentationContext159 = StereometricRelationshipStorage\UncompressedOrZlib
-PresentationContext160 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib
-PresentationContext161 = SurfaceScanMeshStorage\UncompressedOrZlib
-PresentationContext162 = SurfaceScanPointCloudStorage\UncompressedOrZlib
-PresentationContext163 = SurfaceSegmentationStorage\UncompressedOrZlib
-PresentationContext164 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib
-PresentationContext165 = TomotherapeuticRadiationStorage\UncompressedOrZlib
-PresentationContext166 = TractographyResultsStorage\UncompressedOrZlib
-PresentationContext167 = TwelveLeadECGWaveformStorage\UncompressedOrZlib
-PresentationContext168 = VisualAcuityMeasurementsStorage\UncompressedOrZlib
-PresentationContext169 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext170 = XADefinedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext171 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext172 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext173 = XRayRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext68  = AcquisitionContextSRStorage\UncompressedOrZlib
+PresentationContext69  = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib
+PresentationContext70  = AmbulatoryECGWaveformStorage\UncompressedOrZlib
+PresentationContext71  = ArterialPulseWaveformStorage\UncompressedOrZlib
+PresentationContext72  = AutorefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext73  = BasicStructuredDisplayStorage\UncompressedOrZlib
+PresentationContext74  = BasicTextSRStorage\UncompressedOrZlib
+PresentationContext75  = BasicVoiceAudioWaveformStorage\UncompressedOrZlib
+PresentationContext76  = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext77  = BodyPositionWaveformStorage\UncompressedOrZlib
+PresentationContext78  = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib
+PresentationContext79  = CArmPhotonElectronRadiationStorage\UncompressedOrZlib
+PresentationContext80  = CTDefinedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext81  = CTPerformedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext82  = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib
+PresentationContext83  = ChestCADSRStorage\UncompressedOrZlib
+PresentationContext84  = ColonCADSRStorage\UncompressedOrZlib
+PresentationContext85  = ColorPaletteStorage\UncompressedOrZlib
+PresentationContext86  = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext87  = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext88  = Comprehensive3DSRStorage\UncompressedOrZlib
+PresentationContext89  = ComprehensiveSRStorage\UncompressedOrZlib
+PresentationContext90  = ContentAssessmentResultsStorage\UncompressedOrZlib
+PresentationContext91  = DeformableSpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext92  = ElectromyogramWaveformStorage\UncompressedOrZlib
+PresentationContext93  = ElectrooculogramWaveformStorage\UncompressedOrZlib
+PresentationContext94  = EncapsulatedCDAStorage\UncompressedOrZlib
+PresentationContext95  = EncapsulatedMTLStorage\UncompressedOrZlib
+PresentationContext96  = EncapsulatedOBJStorage\UncompressedOrZlib
+PresentationContext97  = EncapsulatedPDFStorage\UncompressedOrZlib
+PresentationContext98  = EncapsulatedSTLStorage\UncompressedOrZlib
+PresentationContext99  = EnhancedSRStorage\UncompressedOrZlib
+PresentationContext100 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext101 = ExtensibleSRStorage\UncompressedOrZlib
+PresentationContext102 = General32BitECGWaveformStorage\UncompressedOrZlib
+PresentationContext103 = GeneralAudioWaveformStorage\UncompressedOrZlib
+PresentationContext104 = GeneralECGWaveformStorage\UncompressedOrZlib
+PresentationContext105 = GenericImplantTemplateStorage\UncompressedOrZlib
+PresentationContext106 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext107 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext108 = HangingProtocolStorage\UncompressedOrZlib
+PresentationContext109 = HemodynamicWaveformStorage\UncompressedOrZlib
+PresentationContext110 = ImplantAssemblyTemplateStorage\UncompressedOrZlib
+PresentationContext111 = ImplantTemplateGroupStorage\UncompressedOrZlib
+PresentationContext112 = ImplantationPlanSRStorage\UncompressedOrZlib
+PresentationContext113 = IntraocularLensCalculationsStorage\UncompressedOrZlib
+PresentationContext114 = InventoryStorage\UncompressedOrZlib
+PresentationContext115 = KeratometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext116 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib
+PresentationContext117 = LensometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext118 = MRSpectroscopyStorage\UncompressedOrZlib
+PresentationContext119 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib
+PresentationContext120 = MammographyCADSRStorage\UncompressedOrZlib
+PresentationContext121 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib
+PresentationContext122 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib
+PresentationContext123 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext124 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib
+PresentationContext125 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib
+PresentationContext126 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib
+PresentationContext127 = ParametricMapStorage\UncompressedOrZlib
+PresentationContext128 = PatientRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext129 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib
+PresentationContext130 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib
+PresentationContext131 = ProcedureLogStorage\UncompressedOrZlib
+PresentationContext132 = ProtocolApprovalStorage\UncompressedOrZlib
+PresentationContext133 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext134 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext135 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext136 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext137 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext138 = RTDoseStorage\UncompressedOrZlib
+PresentationContext139 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext140 = RTIonPlanStorage\UncompressedOrZlib
+PresentationContext141 = RTPatientPositionAcquisitionInstructionStorage\UncompressedOrZlib
+PresentationContext142 = RTPhysicianIntentStorage\UncompressedOrZlib
+PresentationContext143 = RTPlanStorage\UncompressedOrZlib
+PresentationContext144 = RTRadiationRecordSetStorage\UncompressedOrZlib
+PresentationContext145 = RTRadiationSalvageRecordStorage\UncompressedOrZlib
+PresentationContext146 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext147 = RTRadiationSetStorage\UncompressedOrZlib
+PresentationContext148 = RTSegmentAnnotationStorage\UncompressedOrZlib
+PresentationContext149 = RTStructureSetStorage\UncompressedOrZlib
+PresentationContext150 = RTTreatmentPreparationStorage\UncompressedOrZlib
+PresentationContext151 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib
+PresentationContext152 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext153 = RawDataStorage\UncompressedOrZlib
+PresentationContext154 = RealWorldValueMappingStorage\UncompressedOrZlib
+PresentationContext155 = RespiratoryWaveformStorage\UncompressedOrZlib
+PresentationContext156 = RoboticArmRadiationStorage\UncompressedOrZlib
+PresentationContext157 = RoboticRadiationRecordStorage\UncompressedOrZlib
+PresentationContext158 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib
+PresentationContext159 = SegmentationStorage\UncompressedOrZlib
+PresentationContext160 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext161 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib
+PresentationContext162 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib
+PresentationContext163 = SpatialFiducialsStorage\UncompressedOrZlib
+PresentationContext164 = SpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext165 = SpectaclePrescriptionReportStorage\UncompressedOrZlib
+PresentationContext166 = StereometricRelationshipStorage\UncompressedOrZlib
+PresentationContext167 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext168 = SurfaceScanMeshStorage\UncompressedOrZlib
+PresentationContext169 = SurfaceScanPointCloudStorage\UncompressedOrZlib
+PresentationContext170 = SurfaceSegmentationStorage\UncompressedOrZlib
+PresentationContext171 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib
+PresentationContext172 = TomotherapeuticRadiationStorage\UncompressedOrZlib
+PresentationContext173 = TractographyResultsStorage\UncompressedOrZlib
+PresentationContext174 = TwelveLeadECGWaveformStorage\UncompressedOrZlib
+PresentationContext175 = VariableModalityLUTSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext176 = VisualAcuityMeasurementsStorage\UncompressedOrZlib
+PresentationContext177 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext178 = XADefinedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext179 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext180 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext181 = XRayRadiationDoseSRStorage\UncompressedOrZlib
 #
 # retired non-image SOP classes
 #
-PresentationContext174 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib
-PresentationContext175 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib
-PresentationContext176 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib
-PresentationContext177 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib
-PresentationContext178 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib
-PresentationContext179 = RETIRED_StoredPrintStorage\UncompressedOrZlib
+PresentationContext182 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib
+PresentationContext183 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib
+PresentationContext184 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib
+PresentationContext185 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib
+PresentationContext186 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib
+PresentationContext187 = RETIRED_StoredPrintStorage\UncompressedOrZlib
 #
 # draft non-image SOP classes
 #
-PresentationContext180 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext181 = DRAFT_SRAudioStorage\UncompressedOrZlib
-PresentationContext182 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib
-PresentationContext183 = DRAFT_SRDetailStorage\UncompressedOrZlib
-PresentationContext184 = DRAFT_SRTextStorage\UncompressedOrZlib
-PresentationContext185 = DRAFT_WaveformStorage\UncompressedOrZlib
+PresentationContext188 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext189 = DRAFT_SRAudioStorage\UncompressedOrZlib
+PresentationContext190 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib
+PresentationContext191 = DRAFT_SRDetailStorage\UncompressedOrZlib
+PresentationContext192 = DRAFT_SRTextStorage\UncompressedOrZlib
+PresentationContext193 = DRAFT_WaveformStorage\UncompressedOrZlib
 #
 # DICOS Storage
 #
-PresentationContext186 = DICOS_CTImageStorage\AnyTransferSyntax
-PresentationContext187 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax
-PresentationContext188 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax
-PresentationContext189 = DICOS_2DAITStorage\AnyTransferSyntax
-PresentationContext190 = DICOS_3DAITStorage\AnyTransferSyntax
-PresentationContext191 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib
-PresentationContext192 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib
+PresentationContext194 = DICOS_CTImageStorage\AnyTransferSyntax
+PresentationContext195 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax
+PresentationContext196 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax
+PresentationContext197 = DICOS_2DAITStorage\AnyTransferSyntax
+PresentationContext198 = DICOS_3DAITStorage\AnyTransferSyntax
+PresentationContext199 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib
+PresentationContext200 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib
 #
 # DICONDE Storage
 #
-PresentationContext193 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax
-PresentationContext194 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax
+PresentationContext201 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax
+PresentationContext202 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax
 
 # ----------------------------------------------------------------------------
 
@@ -324,160 +346,169 @@ PresentationContext11  = DigitalMammographyXRayImageStorageForPresentation\AnyTr
 PresentationContext12  = DigitalMammographyXRayImageStorageForProcessing\AnyTransferSyntax
 PresentationContext13  = DigitalXRayImageStorageForPresentation\AnyTransferSyntax
 PresentationContext14  = DigitalXRayImageStorageForProcessing\AnyTransferSyntax
-PresentationContext15  = EnhancedCTImageStorage\AnyTransferSyntax
-PresentationContext16  = EnhancedMRColorImageStorage\AnyTransferSyntax
-PresentationContext17  = EnhancedMRImageStorage\AnyTransferSyntax
-PresentationContext18  = EnhancedPETImageStorage\AnyTransferSyntax
-PresentationContext19  = EnhancedUSVolumeStorage\AnyTransferSyntax
-PresentationContext20  = EnhancedXAImageStorage\AnyTransferSyntax
-PresentationContext21  = EnhancedXRFImageStorage\AnyTransferSyntax
-PresentationContext22  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax
-PresentationContext23  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax
-PresentationContext24  = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax
-PresentationContext25  = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax
-PresentationContext26  = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax
-PresentationContext27  = MRImageStorage\AnyTransferSyntax
-PresentationContext28  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext29  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext30  = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext31  = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext32  = NuclearMedicineImageStorage\AnyTransferSyntax
-PresentationContext33  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax
-PresentationContext34  = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax
-PresentationContext35  = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax
-PresentationContext36  = OphthalmicThicknessMapStorage\AnyTransferSyntax
-PresentationContext37  = OphthalmicTomographyImageStorage\AnyTransferSyntax
-PresentationContext38  = PositronEmissionTomographyImageStorage\AnyTransferSyntax
-PresentationContext39  = RTImageStorage\AnyTransferSyntax
-PresentationContext40  = SecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext41  = UltrasoundImageStorage\AnyTransferSyntax
-PresentationContext42  = UltrasoundMultiframeImageStorage\AnyTransferSyntax
-PresentationContext43  = VLEndoscopicImageStorage\AnyTransferSyntax
-PresentationContext44  = VLMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext45  = VLPhotographicImageStorage\AnyTransferSyntax
-PresentationContext46  = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext47  = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax
-PresentationContext48  = VideoEndoscopicImageStorage\AnyTransferSyntax
-PresentationContext49  = VideoMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext50  = VideoPhotographicImageStorage\AnyTransferSyntax
-PresentationContext51  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax
-PresentationContext52  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax
-PresentationContext53  = XRay3DAngiographicImageStorage\AnyTransferSyntax
-PresentationContext54  = XRay3DCraniofacialImageStorage\AnyTransferSyntax
-PresentationContext55  = XRayAngiographicImageStorage\AnyTransferSyntax
-PresentationContext56  = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax
+PresentationContext15  = EnhancedContinuousRTImageStorage\AnyTransferSyntax
+PresentationContext16  = EnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext17  = EnhancedMRColorImageStorage\AnyTransferSyntax
+PresentationContext18  = EnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext19  = EnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext20  = EnhancedRTImageStorage\AnyTransferSyntax
+PresentationContext21  = EnhancedUSVolumeStorage\AnyTransferSyntax
+PresentationContext22  = EnhancedXAImageStorage\AnyTransferSyntax
+PresentationContext23  = EnhancedXRFImageStorage\AnyTransferSyntax
+PresentationContext24  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax
+PresentationContext25  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax
+PresentationContext26  = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext27  = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext28  = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext29  = MRImageStorage\AnyTransferSyntax
+PresentationContext30  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext31  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext32  = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext33  = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext34  = NuclearMedicineImageStorage\AnyTransferSyntax
+PresentationContext35  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax
+PresentationContext36  = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax
+PresentationContext37  = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax
+PresentationContext38  = OphthalmicThicknessMapStorage\AnyTransferSyntax
+PresentationContext39  = OphthalmicTomographyImageStorage\AnyTransferSyntax
+PresentationContext40  = PhotoacousticImageStorage\AnyTransferSyntax
+PresentationContext41  = PositronEmissionTomographyImageStorage\AnyTransferSyntax
+PresentationContext42  = RTImageStorage\AnyTransferSyntax
+PresentationContext43  = SecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext44  = UltrasoundImageStorage\AnyTransferSyntax
+PresentationContext45  = UltrasoundMultiframeImageStorage\AnyTransferSyntax
+PresentationContext46  = VLEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext47  = VLMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext48  = VLPhotographicImageStorage\AnyTransferSyntax
+PresentationContext49  = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext50  = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax
+PresentationContext51  = VideoEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext52  = VideoMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext53  = VideoPhotographicImageStorage\AnyTransferSyntax
+PresentationContext54  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax
+PresentationContext55  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax
+PresentationContext56  = XRay3DAngiographicImageStorage\AnyTransferSyntax
+PresentationContext57  = XRay3DCraniofacialImageStorage\AnyTransferSyntax
+PresentationContext58  = XRayAngiographicImageStorage\AnyTransferSyntax
+PresentationContext59  = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax
 #
 # the following presentation contexts are for non-image SOP classes
+# (including some that do not fit into the PATIENT-STUDY-SERIES-INSTANCE model)
 #
-PresentationContext57  = AcquisitionContextSRStorage\UncompressedOrZlib
-PresentationContext58  = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib
-PresentationContext59  = AmbulatoryECGWaveformStorage\UncompressedOrZlib
-PresentationContext60  = ArterialPulseWaveformStorage\UncompressedOrZlib
-PresentationContext61  = AutorefractionMeasurementsStorage\UncompressedOrZlib
-PresentationContext62  = BasicStructuredDisplayStorage\UncompressedOrZlib
-PresentationContext63  = BasicTextSRStorage\UncompressedOrZlib
-PresentationContext64  = BasicVoiceAudioWaveformStorage\UncompressedOrZlib
-PresentationContext65  = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext66  = BodyPositionWaveformStorage\UncompressedOrZlib
-PresentationContext67  = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib
-PresentationContext68  = CArmPhotonElectronRadiationStorage\UncompressedOrZlib
-PresentationContext69  = CTDefinedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext70  = CTPerformedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext71  = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib
-PresentationContext72  = ChestCADSRStorage\UncompressedOrZlib
-PresentationContext73  = ColonCADSRStorage\UncompressedOrZlib
-PresentationContext74  = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext75  = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext76  = Comprehensive3DSRStorage\UncompressedOrZlib
-PresentationContext77  = ComprehensiveSRStorage\UncompressedOrZlib
-PresentationContext78  = ContentAssessmentResultsStorage\UncompressedOrZlib
-PresentationContext79  = DeformableSpatialRegistrationStorage\UncompressedOrZlib
-PresentationContext80  = ElectromyogramWaveformStorage\UncompressedOrZlib
-PresentationContext81  = ElectrooculogramWaveformStorage\UncompressedOrZlib
-PresentationContext82  = EncapsulatedCDAStorage\UncompressedOrZlib
-PresentationContext83  = EncapsulatedMTLStorage\UncompressedOrZlib
-PresentationContext84  = EncapsulatedOBJStorage\UncompressedOrZlib
-PresentationContext85  = EncapsulatedPDFStorage\UncompressedOrZlib
-PresentationContext86  = EncapsulatedSTLStorage\UncompressedOrZlib
-PresentationContext87  = EnhancedSRStorage\UncompressedOrZlib
-PresentationContext88  = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext89  = ExtensibleSRStorage\UncompressedOrZlib
-PresentationContext90  = GeneralAudioWaveformStorage\UncompressedOrZlib
-PresentationContext91  = GeneralECGWaveformStorage\UncompressedOrZlib
-PresentationContext92  = GenericImplantTemplateStorage\UncompressedOrZlib
-PresentationContext93  = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext94  = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext95  = HangingProtocolStorage\UncompressedOrZlib
-PresentationContext96  = HemodynamicWaveformStorage\UncompressedOrZlib
-PresentationContext97  = ImplantAssemblyTemplateStorage\UncompressedOrZlib
-PresentationContext98  = ImplantTemplateGroupStorage\UncompressedOrZlib
-PresentationContext99  = ImplantationPlanSRStorage\UncompressedOrZlib
-PresentationContext100 = IntraocularLensCalculationsStorage\UncompressedOrZlib
-PresentationContext101 = KeratometryMeasurementsStorage\UncompressedOrZlib
-PresentationContext102 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib
-PresentationContext103 = LensometryMeasurementsStorage\UncompressedOrZlib
-PresentationContext104 = MRSpectroscopyStorage\UncompressedOrZlib
-PresentationContext105 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib
-PresentationContext106 = MammographyCADSRStorage\UncompressedOrZlib
-PresentationContext107 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib
-PresentationContext108 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib
-PresentationContext109 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext110 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib
-PresentationContext111 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib
-PresentationContext112 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib
-PresentationContext113 = ParametricMapStorage\UncompressedOrZlib
-PresentationContext114 = PatientRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext115 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib
-PresentationContext116 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib
-PresentationContext117 = ProcedureLogStorage\UncompressedOrZlib
-PresentationContext118 = ProtocolApprovalStorage\UncompressedOrZlib
-PresentationContext119 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext120 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext121 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext122 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext123 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext124 = RTDoseStorage\UncompressedOrZlib
-PresentationContext125 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext126 = RTIonPlanStorage\UncompressedOrZlib
-PresentationContext127 = RTPhysicianIntentStorage\UncompressedOrZlib
-PresentationContext128 = RTPlanStorage\UncompressedOrZlib
-PresentationContext129 = RTRadiationRecordSetStorage\UncompressedOrZlib
-PresentationContext130 = RTRadiationSalvageRecordStorage\UncompressedOrZlib
-PresentationContext131 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext132 = RTRadiationSetStorage\UncompressedOrZlib
-PresentationContext133 = RTSegmentAnnotationStorage\UncompressedOrZlib
-PresentationContext134 = RTStructureSetStorage\UncompressedOrZlib
-PresentationContext135 = RTTreatmentPreparationStorage\UncompressedOrZlib
-PresentationContext136 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib
-PresentationContext137 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext138 = RawDataStorage\UncompressedOrZlib
-PresentationContext139 = RealWorldValueMappingStorage\UncompressedOrZlib
-PresentationContext140 = RespiratoryWaveformStorage\UncompressedOrZlib
-PresentationContext141 = RoboticArmRadiationStorage\UncompressedOrZlib
-PresentationContext142 = RoboticRadiationRecordStorage\UncompressedOrZlib
-PresentationContext143 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib
-PresentationContext144 = SegmentationStorage\UncompressedOrZlib
-PresentationContext145 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext146 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib
-PresentationContext147 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib
-PresentationContext148 = SpatialFiducialsStorage\UncompressedOrZlib
-PresentationContext149 = SpatialRegistrationStorage\UncompressedOrZlib
-PresentationContext150 = SpectaclePrescriptionReportStorage\UncompressedOrZlib
-PresentationContext151 = StereometricRelationshipStorage\UncompressedOrZlib
-PresentationContext152 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib
-PresentationContext153 = SurfaceScanMeshStorage\UncompressedOrZlib
-PresentationContext154 = SurfaceScanPointCloudStorage\UncompressedOrZlib
-PresentationContext155 = SurfaceSegmentationStorage\UncompressedOrZlib
-PresentationContext156 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib
-PresentationContext157 = TomotherapeuticRadiationStorage\UncompressedOrZlib
-PresentationContext158 = TractographyResultsStorage\UncompressedOrZlib
-PresentationContext159 = TwelveLeadECGWaveformStorage\UncompressedOrZlib
-PresentationContext160 = VisualAcuityMeasurementsStorage\UncompressedOrZlib
-PresentationContext161 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext162 = XADefinedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext163 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext164 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext165 = XRayRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext60  = AcquisitionContextSRStorage\UncompressedOrZlib
+PresentationContext61  = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib
+PresentationContext62  = AmbulatoryECGWaveformStorage\UncompressedOrZlib
+PresentationContext63  = ArterialPulseWaveformStorage\UncompressedOrZlib
+PresentationContext64  = AutorefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext65  = BasicStructuredDisplayStorage\UncompressedOrZlib
+PresentationContext66  = BasicTextSRStorage\UncompressedOrZlib
+PresentationContext67  = BasicVoiceAudioWaveformStorage\UncompressedOrZlib
+PresentationContext68  = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext69  = BodyPositionWaveformStorage\UncompressedOrZlib
+PresentationContext70  = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib
+PresentationContext71  = CArmPhotonElectronRadiationStorage\UncompressedOrZlib
+PresentationContext72  = CTDefinedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext73  = CTPerformedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext74  = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib
+PresentationContext75  = ChestCADSRStorage\UncompressedOrZlib
+PresentationContext76  = ColonCADSRStorage\UncompressedOrZlib
+PresentationContext77  = ColorPaletteStorage\UncompressedOrZlib
+PresentationContext78  = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext79  = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext80  = Comprehensive3DSRStorage\UncompressedOrZlib
+PresentationContext81  = ComprehensiveSRStorage\UncompressedOrZlib
+PresentationContext82  = ContentAssessmentResultsStorage\UncompressedOrZlib
+PresentationContext83  = DeformableSpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext84  = ElectromyogramWaveformStorage\UncompressedOrZlib
+PresentationContext85  = ElectrooculogramWaveformStorage\UncompressedOrZlib
+PresentationContext86  = EncapsulatedCDAStorage\UncompressedOrZlib
+PresentationContext87  = EncapsulatedMTLStorage\UncompressedOrZlib
+PresentationContext88  = EncapsulatedOBJStorage\UncompressedOrZlib
+PresentationContext89  = EncapsulatedPDFStorage\UncompressedOrZlib
+PresentationContext90  = EncapsulatedSTLStorage\UncompressedOrZlib
+PresentationContext91  = EnhancedSRStorage\UncompressedOrZlib
+PresentationContext92  = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext93  = ExtensibleSRStorage\UncompressedOrZlib
+PresentationContext94  = General32BitECGWaveformStorage\UncompressedOrZlib
+PresentationContext95  = GeneralAudioWaveformStorage\UncompressedOrZlib
+PresentationContext96  = GeneralECGWaveformStorage\UncompressedOrZlib
+PresentationContext97  = GenericImplantTemplateStorage\UncompressedOrZlib
+PresentationContext98  = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext99  = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext100 = HangingProtocolStorage\UncompressedOrZlib
+PresentationContext101 = HemodynamicWaveformStorage\UncompressedOrZlib
+PresentationContext102 = ImplantAssemblyTemplateStorage\UncompressedOrZlib
+PresentationContext103 = ImplantTemplateGroupStorage\UncompressedOrZlib
+PresentationContext104 = ImplantationPlanSRStorage\UncompressedOrZlib
+PresentationContext105 = IntraocularLensCalculationsStorage\UncompressedOrZlib
+PresentationContext106 = InventoryStorage\UncompressedOrZlib
+PresentationContext107 = KeratometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext108 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib
+PresentationContext109 = LensometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext110 = MRSpectroscopyStorage\UncompressedOrZlib
+PresentationContext111 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib
+PresentationContext112 = MammographyCADSRStorage\UncompressedOrZlib
+PresentationContext113 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib
+PresentationContext114 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib
+PresentationContext115 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext116 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib
+PresentationContext117 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib
+PresentationContext118 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib
+PresentationContext119 = ParametricMapStorage\UncompressedOrZlib
+PresentationContext120 = PatientRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext121 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib
+PresentationContext122 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib
+PresentationContext123 = ProcedureLogStorage\UncompressedOrZlib
+PresentationContext124 = ProtocolApprovalStorage\UncompressedOrZlib
+PresentationContext125 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext126 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext127 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext128 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext129 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext130 = RTDoseStorage\UncompressedOrZlib
+PresentationContext131 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext132 = RTIonPlanStorage\UncompressedOrZlib
+PresentationContext133 = RTPatientPositionAcquisitionInstructionStorage\UncompressedOrZlib
+PresentationContext134 = RTPhysicianIntentStorage\UncompressedOrZlib
+PresentationContext135 = RTPlanStorage\UncompressedOrZlib
+PresentationContext136 = RTRadiationRecordSetStorage\UncompressedOrZlib
+PresentationContext137 = RTRadiationSalvageRecordStorage\UncompressedOrZlib
+PresentationContext138 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext139 = RTRadiationSetStorage\UncompressedOrZlib
+PresentationContext140 = RTSegmentAnnotationStorage\UncompressedOrZlib
+PresentationContext141 = RTStructureSetStorage\UncompressedOrZlib
+PresentationContext142 = RTTreatmentPreparationStorage\UncompressedOrZlib
+PresentationContext143 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib
+PresentationContext144 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext145 = RawDataStorage\UncompressedOrZlib
+PresentationContext146 = RealWorldValueMappingStorage\UncompressedOrZlib
+PresentationContext147 = RespiratoryWaveformStorage\UncompressedOrZlib
+PresentationContext148 = RoboticArmRadiationStorage\UncompressedOrZlib
+PresentationContext149 = RoboticRadiationRecordStorage\UncompressedOrZlib
+PresentationContext150 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib
+PresentationContext151 = SegmentationStorage\UncompressedOrZlib
+PresentationContext152 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext153 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib
+PresentationContext154 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib
+PresentationContext155 = SpatialFiducialsStorage\UncompressedOrZlib
+PresentationContext156 = SpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext157 = SpectaclePrescriptionReportStorage\UncompressedOrZlib
+PresentationContext158 = StereometricRelationshipStorage\UncompressedOrZlib
+PresentationContext159 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext160 = SurfaceScanMeshStorage\UncompressedOrZlib
+PresentationContext161 = SurfaceScanPointCloudStorage\UncompressedOrZlib
+PresentationContext162 = SurfaceSegmentationStorage\UncompressedOrZlib
+PresentationContext163 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib
+PresentationContext164 = TomotherapeuticRadiationStorage\UncompressedOrZlib
+PresentationContext165 = TractographyResultsStorage\UncompressedOrZlib
+PresentationContext166 = TwelveLeadECGWaveformStorage\UncompressedOrZlib
+PresentationContext167 = VariableModalityLUTSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext168 = VisualAcuityMeasurementsStorage\UncompressedOrZlib
+PresentationContext169 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext170 = XADefinedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext171 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext172 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext173 = XRayRadiationDoseSRStorage\UncompressedOrZlib
 
 # ============================================================================
 [[Profiles]]
index f34b8ae1db615f8cd2e8fd666646075d5a4c2e4f..c2034eaa5fac52d562544f84eccea03534e5cd5c 100644 (file)
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2003-2022, OFFIS e.V.
+#  Copyright (C) 2003-2023, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
 #
 #  Module:  dcmnet
 #
-#  Author:  Marco Eichelberg
+#  Author:  Marco Eichelberg, Joerg Riesmeier
 #
 #  Purpose: Sample configuration file for storescu
+#           (see "asconfig.txt" for documentation)
 #
 
 # ============================================================================
@@ -40,6 +41,10 @@ TransferSyntax1 = MPEG2MainProfile@MainLevel
 # commented out the following line since we do not support transcoding of MPEG2
 #
 #TransferSyntax2 = MPEG2MainProfile@HighLevel
+#
+# (there are also MPEG2 transfer syntaxes that allow the encapsulated stream
+#  of encoded pixel data to be split into one or more fragments, see below)
+#
 
 [MPEG4]
 TransferSyntax1 = MPEG4HighProfile/Level4.1
@@ -50,6 +55,66 @@ TransferSyntax1 = MPEG4HighProfile/Level4.1
 #TransferSyntax3 = MPEG4HighProfile/Level4.2For2DVideo
 #TransferSyntax4 = MPEG4HighProfile/Level4.2For3DVideo
 #TransferSyntax5 = MPEG4StereoHighProfile/Level4.2
+#
+# (there are also MPEG4 transfer syntaxes that allow the encapsulated stream
+#  of encoded pixel data to be split into one or more fragments, see below)
+#
+
+#
+# complete list of supported transfer syntaxes:
+#
+# - LocalEndianExplicit
+# - OppositeEndianExplicit
+#
+# - LittleEndianExplicit
+# - BigEndianExplicit
+# - LittleEndianImplicit
+#
+# - DeflatedLittleEndianExplicit
+#
+# - JPEGBaseline
+# - JPEGExtended:Process2+4
+# - JPEGExtended:Process3+5
+# - JPEGSpectralSelection:Non-hierarchical:Process6+8
+# - JPEGSpectralSelection:Non-hierarchical:Process7+9
+# - JPEGFullProgression:Non-hierarchical:Process10+12
+# - JPEGFullProgression:Non-hierarchical:Process11+13
+# - JPEGLossless:Non-hierarchical:Process14
+# - JPEGLossless:Non-hierarchical:Process15
+# - JPEGExtended:Hierarchical:Process16+18
+# - JPEGExtended:Hierarchical:Process17+19
+# - JPEGSpectralSelection:Hierarchical:Process20+22
+# - JPEGSpectralSelection:Hierarchical:Process21+23
+# - JPEGFullProgression:Hierarchical:Process24+26
+# - JPEGFullProgression:Hierarchical:Process25+27
+# - JPEGLossless:Hierarchical:Process28
+# - JPEGLossless:Hierarchical:Process29
+# - JPEGLossless:Non-hierarchical-1stOrderPrediction
+# - JPEGLSLossless
+# - JPEGLSLossy
+# - RLELossless
+# - JPEG2000LosslessOnly
+# - JPEG2000
+# - JPEG2000MulticomponentLosslessOnly
+# - JPEG2000Multicomponent
+#
+# - MPEG2MainProfile@MainLevel
+# - MPEG2MainProfile@HighLevel
+# - MPEG4HighProfile/Level4.1
+# - MPEG4BDcompatibleHighProfile/Level4.1
+# - MPEG4HighProfile/Level4.2For2DVideo
+# - MPEG4HighProfile/Level4.2For3DVideo
+# - MPEG4StereoHighProfile/Level4.2
+# - FragmentableMPEG2MainProfile/MainLevel
+# - FragmentableMPEG2MainProfile/HighLevel
+# - FragmentableMPEG4HighProfile/Level4.1
+# - FragmentableMPEG4BDcompatibleHighProfile/Level4.1
+# - FragmentableMPEG4HighProfile/Level4.2For2DVideo
+# - FragmentableMPEG4HighProfile/Level4.2For3DVideo
+# - FragmentableMPEG4StereoHighProfile/Level4.2
+# - HEVCMainProfile/Level5.1
+# - HEVCMain10Profile/Level5.1
+#
 
 # ============================================================================
 [[PresentationContexts]]
@@ -211,6 +276,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - BreastTomosynthesisImageStorage
 # - CArmPhotonElectronRadiationRecordStorage
 # - CArmPhotonElectronRadiationStorage
+# - ColorPaletteStorage
 # - CompositingPlanarMPRVolumetricPresentationStateStorage
 # - Comprehensive3DSRStorage
 # - ContentAssessmentResultsStorage
@@ -225,11 +291,14 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - EncapsulatedMTLStorage
 # - EncapsulatedOBJStorage
 # - EncapsulatedSTLStorage
+# - EnhancedContinuousRTImageStorage
 # - EnhancedMRColorImageStorage
 # - EnhancedPETImageStorage
+# - EnhancedRTImageStorage
 # - EnhancedUSVolumeStorage
 # - EnhancedXRayRadiationDoseSRStorage
 # - ExtensibleSRStorage
+# - General32BitECGWaveformStorage
 # - GeneralAudioWaveformStorage
 # - GenericImplantTemplateStorage
 # - GrayscalePlanarMPRVolumetricPresentationStateStorage
@@ -239,6 +308,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - IntraocularLensCalculationsStorage
 # - IntravascularOpticalCoherenceTomographyImageStorageForPresentation
 # - IntravascularOpticalCoherenceTomographyImageStorageForProcessing
+# - InventoryStorage
 # - KeratometryMeasurementsStorage
 # - LegacyConvertedEnhancedCTImageStorage
 # - LegacyConvertedEnhancedMRImageStorage
@@ -257,6 +327,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - ParametricMapStorage
 # - PatientRadiationDoseSRStorage
 # - PerformedImagingAgentAdministrationSRStorage
+# - PhotoacousticImageStorage
 # - PlannedImagingAgentAdministrationSRStorage
 # - ProtocolApprovalStorage
 # - RadiopharmaceuticalRadiationDoseSRStorage
@@ -269,6 +340,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - RTBrachyApplicationSetupDeliveryInstructionStorage
 # - RTIonBeamsTreatmentRecordStorage
 # - RTIonPlanStorage
+# - RTPatientPositionAcquisitionInstructionStorage
 # - RTPhysicianIntentStorage
 # - RTRadiationRecordSetStorage
 # - RTRadiationSalvageRecordStorage
@@ -288,6 +360,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - TomotherapeuticRadiationRecordStorage
 # - TomotherapeuticRadiationStorage
 # - TractographyResultsStorage
+# - VariableModalityLUTSoftcopyPresentationStateStorage
 # - VisualAcuityMeasurementsStorage
 # - VLWholeSlideMicroscopyImageStorage
 # - VolumeRenderingVolumetricPresentationStateStorage
index d872c2b694f45963246dd05050866ab5e8b749b5..8d73a46738e2b535a3fb480531456dcfe3c19ade 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2022, OFFIS e.V.
+ *  Copyright (C) 2003-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -83,6 +83,8 @@ public:
 
   /** this method evaluates an incoming association request according to the settings
    *  of a profile maintained by this object. It is used by an association acceptor.
+   *  @note The first transfer syntax in the list that is acceptable will be
+   *    preferred.  More details can be found in the text file "asconfig.txt".
    *  @param profile symbolic profile name, must not be NULL
    *  @param assoc T_ASC_Association structure to be evaluated
    *  @return EC_Normal if successful, an error code otherwise
index 9ef88cc6bd86238b5d431a738975a2eac77e3f97..87567780aedd21bbcc900a242626fda186318216 100644 (file)
@@ -349,8 +349,22 @@ typedef enum {                  /* DIC_US */
  * DIMSE Data Set Type Codes.
  */
 
-typedef enum {                  /* DIC_US */
-    DIMSE_DATASET_PRESENT = 0x0001,     /* anything other than 0x0101 */
+typedef enum { /* DIC_US */
+    /* In DCMTK releases before 3.6.8, some tools incorrectly
+     * compare DataSetType for equality with DIMSE_DATASET_PRESENT,
+     * instead of checking whether DataSetType is different from DIMSE_DATASET_NULL.
+     * These tools will fail if a different value than 0x0001 is used for this constant.
+     * See DCMTK issue #1045.
+     *
+     * The DICOM standard, on the other hand, recommends the value 0x0102
+     * if backwards compatibility with ACR-NEMA is desired. If this is important,
+     * define the macro DCMTK_ENABLE_ACR_NEMA_DATASET_PRESENT_COMPATIBILITY.
+     */
+#ifdef DCMTK_ENABLE_ACR_NEMA_DATASET_PRESENT_COMPATIBILITY
+    DIMSE_DATASET_PRESENT = 0x0102, /* anything other than 0x0101 */
+#else
+    DIMSE_DATASET_PRESENT = 0x0001, /* anything other than 0x0101 */
+#endif
     DIMSE_DATASET_NULL = 0x0101
 } T_DIMSE_DataSetType;
 
index aee3af9143d5cca0cb988a09a9e2b250bf40c807..527ce1117ce6afde4265d92875dc97fb589e9f85 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2021, OFFIS e.V.
+ *  Copyright (C) 2009-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -132,8 +132,7 @@ struct DCMTK_DCMNET_EXPORT DcmPresentationContextInfo
  *  supported list of presentation contexts. However, if this class should negotiate
  *  Verification, call setEnableVerification(). In that case DcmSCP will also
  *  respond to related C-ECHO requests. Note that this cannot be reverted.
- *  @warning This class is EXPERIMENTAL. Be careful to use it in production environment.
- */
+  */
 class DCMTK_DCMNET_EXPORT DcmSCP
 {
 
@@ -545,11 +544,19 @@ protected:
      */
     virtual void notifyAssociationRequest(const T_ASC_Parameters& params, DcmSCPActionType& desiredAction);
 
-    /** Overwrite this function if called AE title should undergo checking. If
-     *  OFTrue is returned, the AE title is accepted and processing is continued.
+    /** Overwrite this function if called AE title should undergo custom checking.
+    *   If OFTrue is returned, the AE title is accepted and processing is continued.
      *  In case of OFFalse, the SCP will refuse the incoming association with
      *  error "Called Application Entity Title Not Recognized".
-     *  The standard handler always returns OFTrue.
+     *
+     *  The standard handler always returns true, if setRespondWithCalledAETitle()
+     *  has been enabled, i.e. DcmSCP will respond with the AE Title the remote AE
+     *  used for DcmSCP as the "Called AE Title". This is DcmSCP's default behaviour
+     *  and in particular good for testing.
+     *
+     *  If setRespondWithCalledAETitle() is set to false, DcmSCP will check whether
+     *  the Called AE Title used by the remote AE matches the one configured for
+     *  DcmSCP. The default value is "DCMTK_SCP" and can be changed calling setAETitle().
      *  @param calledAE The called AE title the SCU used that should be checked
      *  @return OFTrue, if AE title is accepted, OFFalse otherwise
      */
index 5b53df0c77b7357ead0f9365ae4aff9e9c36ac05..5237dfdc21d4594db942750a8ab535d20d00164f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2022, OFFIS e.V.
+ *  Copyright (C) 2008-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -189,7 +189,6 @@ private:
  *  support for negotiating associations and sending and receiving arbitrary DIMSE messages
  *  on that connection. DcmSCU has built-in C-ECHO support so derived classes do not have to
  *  implement that capability on their own.
- *  @warning This class is EXPERIMENTAL. Be careful to use it in production environment.
  */
 class DCMTK_DCMNET_EXPORT DcmSCU
 {
@@ -502,9 +501,14 @@ public:
      *  class and usually only, if the last command send on that presentation context was a
      *  C-FIND message.
      *  @param presID [in] The presentation context ID where the C-CANCEL should be sent on.
+     *  @param msgIDBeingRespondedTo [in] Optional message ID to respond with a C-CANCEL request.
+     *                                    -1 means standard logic will take place. It should be
+     *                                    provided when nextMessageId() is overridden.
+     *                                    The value should fit UINT16_MAX.
      *  @return The current implementation always returns EC_Normal.
      */
-    virtual OFCondition sendCANCELRequest(const T_ASC_PresentationContextID presID);
+    virtual OFCondition sendCANCELRequest(const T_ASC_PresentationContextID presID,
+                                          const Sint32 msgIDBeingRespondedTo = -1);
 
     /** This function sends a N-ACTION request on the currently opened association and receives
      *  the corresponding response then
index 86fa32fa7e585aa3d90dd821b9a5749963a2ec7c..5558bca7b8fee2956b88847289cc454e19d792c2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2022, OFFIS e.V.
+ *  Copyright (C) 1994-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -305,7 +305,7 @@ ASC_createAssociationParameters(T_ASC_Parameters ** params,
     ASC_setAPTitles(*params,
                     "calling AP Title",
                     "called AP Title",
-                    "resp. AP Title");
+                    "");
 
     /* make sure max pdv length is even */
     if ((maxReceivePDUSize % 2) != 0)
@@ -1400,7 +1400,7 @@ void ASC_getCopyOfIdentResponse(T_ASC_Parameters * params,
 OFCondition ASC_setIdentAC(
     T_ASC_Parameters * params,
     const char* response,
-    const Uint16& length )
+    const Uint16 length )
 {
   if (params == NULL)
     return ASC_NULLKEY;
index db85304a7ca25513a39528d507f42673c2ea86bb..869f52ee25d2878f8be923069e29b1e792552764 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2021, OFFIS e.V.
+ *  Copyright (C) 2011-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -564,7 +564,7 @@ OFCondition DcmStorageSCU::addPresentationContexts()
         uncompressedXfers.push_back(UID_LittleEndianImplicitTransferSyntax);
         // make sure that the list of presentation contexts is empty before we start
         clearPresentationContexts();
-        // iterate over the list of SOP instance to be transferred
+        // iterate over the list of SOP instances to be transferred
         // (continue with next SOP instance if there already was a transmission)
         if (PresentationContextCounter == 0)
             CurrentTransferEntry = TransferList.begin();
@@ -617,7 +617,7 @@ OFCondition DcmStorageSCU::addPresentationContexts()
                 if ((*transferEntry)->PresentationContextID == 0)
                 {
                     // check whether transfer syntax is known at all
-                    if (xfer.getXfer() == EXS_Unknown)
+                    if (xfer == EXS_Unknown)
                     {
                         // warn that an unknown (and therefore unsupported) transfer syntax is used
                         DCMNET_WARN("transfer syntax is unknown, trying to propose only this one: "
@@ -729,7 +729,7 @@ OFCondition DcmStorageSCU::addPresentationContexts()
                         (*transferEntry)->PresentationContextID = OFstatic_cast(T_ASC_PresentationContextID, presContextID);
                         // increase ID for the next presentation context
                         presContextID += 2;
-                        // count total number of presentation context
+                        // count total number of presentation contexts
                         ++PresentationContextCounter;
                     } else {
                         if (status == EC_UnsupportedEncoding)
@@ -794,7 +794,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
     if (!TransferList.empty())
     {
         DcmDataset *dataset = NULL;
-        // iterate over the list of SOP instance to be transferred
+        // iterate over the list of SOP instances to be transferred
         // (continue with next SOP instance if there already was a transmission)
         OFListConstIterator(TransferEntry *) lastEntry = TransferList.end();
         while ((CurrentTransferEntry != lastEntry) && status.good())
@@ -872,9 +872,8 @@ OFCondition DcmStorageSCU::sendSOPInstances()
                     // notify user of this class that the current SOP instance is to be sent
                     notifySOPInstanceToBeSent(**CurrentTransferEntry);
                     // call the inherited method from the base class doing the real work
-                    status = sendSTORERequest((*CurrentTransferEntry)->PresentationContextID, "" /* filename */,
-                        dataset, (*CurrentTransferEntry)->ResponseStatusCode,
-                        MoveOriginatorAETitle, MoveOriginatorMsgID);
+                    status = sendSTORERequest((*CurrentTransferEntry)->PresentationContextID, "" /* filename */, dataset,
+                        (*CurrentTransferEntry)->ResponseStatusCode, MoveOriginatorAETitle, MoveOriginatorMsgID);
                     // store some further information (even in case of error)
                     (*CurrentTransferEntry)->AssociationNumber = AssociationCounter;
                     (*CurrentTransferEntry)->NetworkTransferSyntax = dataset->getCurrentXfer();
@@ -1207,7 +1206,7 @@ OFCondition DcmStorageSCU::checkSOPInstance(const OFString &sopClassUID,
                 {
                     DCMNET_DEBUG("retired transfer syntax: " << transferSyntaxUID);
                 }
-                else if (xfer.getXfer() == EXS_Unknown)
+                else if (xfer == EXS_Unknown)
                 {
                     // check whether the DICOM standard prefix for transfer syntax UIDs is used
                     if (sopClassUID.compare(0, 17, "1.2.840.10008.1.2") == 0)
index b932fbef7e89add5b41879793b501add2072cde3..2fedb9b1fb138a2a47c3c4eca0287a56d76df75e 100644 (file)
@@ -1387,8 +1387,7 @@ DT_2_IndicatePData(PRIVATE_NETWORKKEY ** /*network*/,
     unsigned long
         pduLength,
         pdvLength,
-        pdvCount;
-    long
+        pdvCount,
         length;
     unsigned char
        *p;
@@ -1413,19 +1412,22 @@ DT_2_IndicatePData(PRIVATE_NETWORKKEY ** /*network*/,
     p = (*association)->fragmentBuffer;     //set p to the buffer which contains the PDU's PDVs
     while (length >= 4) {                   //as long as length is at least 4 (= a length field can be read)
         EXTRACT_LONG_BIG(p, pdvLength);     //determine the length of the current PDV (the PDV p points to)
-        p += 4 + pdvLength;                 //move p so that it points to the next PDV (move p 4 bytes over the length field plus the amount of bytes which is captured in the PDV's length field (over presentation context.Id, message information header and data fragment))
-        length -= 4 + pdvLength;            //update length (i.e. determine the length of the buffer which has not been evaluated yet.)
-        pdvCount++;                         //increase counter by one, since we've found another PDV
 
         // There must be at least a presentation context ID and a message
         // control header (see below), else the calculation pdvLength - 2 below
         // will underflow.
-        if (pdvLength < 2)
+        // Check that pdvLength will not overflow ULONG_MAX with additional 4 bytes.
+        // Check that pdvLength + additional 4 bytes is less than remaining length.
+        if (pdvLength < 2 || ULONG_MAX - pdvLength < 4 || length < 4 + pdvLength)
         {
            char buf[256];
            sprintf(buf, "PDV with invalid length %lu encountered. This probably indicates a malformed P DATA PDU.", pdvLength);
            return makeDcmnetCondition(DULC_ILLEGALPDULENGTH, OF_error, buf);
         }
+
+        p += 4 + pdvLength;                 //move p so that it points to the next PDV (move p 4 bytes over the length field plus the amount of bytes which is captured in the PDV's length field (over presentation context.Id, message information header and data fragment))
+        length -= 4 + pdvLength;            //update length (i.e. determine the length of the buffer which has not been evaluated yet.)
+        pdvCount++;                         //increase counter by one, since we've found another PDV
     }
 
     /* if after having counted the PDVs the length variable does not equal */
index 35b1d1ad7d17871613d2c04eb795bc7508642790..452c8dd8413a5d77795ffd9338de64dbef94da90 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2009-2021, OFFIS e.V.
+ *  Copyright (C) 2009-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1460,7 +1460,7 @@ OFCondition DcmSCP::sendEVENTREPORTRequest(const T_ASC_PresentationContextID pre
     rspStatusCode                            = eventReportRsp.DimseStatus;
 
     // Check whether there is a dataset to be received
-    if (eventReportRsp.DataSetType == DIMSE_DATASET_PRESENT)
+    if (eventReportRsp.DataSetType != DIMSE_DATASET_NULL)
     {
         // this should never happen
         DcmDataset* tempDataset = NULL;
@@ -2075,8 +2075,17 @@ void DcmSCP::notifyAssociationRequest(const T_ASC_Parameters& params, DcmSCPActi
 
 // ----------------------------------------------------------------------------
 
-OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& /*calledAETitle*/)
+OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& calledAETitle)
 {
+    if (m_cfg->getRespondWithCalledAETitle() || (calledAETitle == m_cfg->getAETitle()))
+    {
+        return OFTrue;
+    }
+    else if (calledAETitle != m_cfg->getAETitle())
+    {
+        DCMNET_ERROR("Called AE Title does not match configured AE Title: " << m_cfg->getAETitle());
+        return OFFalse;
+    }
     return OFTrue;
 }
 
index fb1f53eccc48e885be681a2b50fed421e5c0d107..d32261f77ffcb6dfd8707a97ce41a94b286f67ee 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2022, OFFIS e.V.
+ *  Copyright (C) 2008-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -788,8 +788,8 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
                             << OFstatic_cast(unsigned int, pcid) << ": abstract syntax does not match SOP class UID");
             }
             /* Try to convert to the negotiated transfer syntax */
-            DcmXfer netXfer = DcmXfer(transferSyntax.c_str()).getXfer();
-            if (netXfer.getXfer() != xferSyntax)
+            DcmXfer netXfer(transferSyntax.c_str());
+            if (netXfer != xferSyntax)
             {
                 DCMNET_INFO("Converting transfer syntax: " << xfer.getXferName() << " -> " << netXfer.getXferName());
                 cond = dataset->chooseRepresentation(netXfer.getXfer(), NULL);
@@ -1613,11 +1613,15 @@ OFCondition DcmSCU::handleFINDResponse(const T_ASC_PresentationContextID /* pres
 /* ************************************************************************* */
 
 // Send C-CANCEL-REQ and, therefore, ends current C-FIND, -MOVE or -GET session
-OFCondition DcmSCU::sendCANCELRequest(const T_ASC_PresentationContextID presID)
+OFCondition DcmSCU::sendCANCELRequest(const T_ASC_PresentationContextID presID,
+                                      const Sint32 msgIDBeingRespondedTo)
 {
     if (!isConnected())
         return DIMSE_ILLEGALASSOCIATION;
 
+    if (msgIDBeingRespondedTo > OFstatic_cast(Sint32,UINT16_MAX) || msgIDBeingRespondedTo < -1)
+        return EC_IllegalParameter;
+
     /* Prepare DIMSE data structures for issuing request */
     OFCondition cond;
     OFString tempStr;
@@ -1628,18 +1632,27 @@ OFCondition DcmSCU::sendCANCELRequest(const T_ASC_PresentationContextID presID)
     T_DIMSE_C_CancelRQ* req = &(msg.msg.CCancelRQ);
     // Set type of message
     msg.CommandField = DIMSE_C_CANCEL_RQ;
-    /* Set message ID responded to. A new message ID is _not_ needed so
-       we do not increment the message ID here but instead have to give the
-       message ID that was used last.
-       Note that that it is required to actually use the message ID of the last
-       C-FIND/GET/MOVE that was issued on this presentation context channel.
-       However, since we only support synchronous association mode so far,
-       it is enough to take the last message ID used at all.
-       For asynchronous operation, we would have to lookup the message ID
-       of the last C-FIND/GET/MOVE request issued and thus, store this
-       information after sending it.
-     */
-    req->MessageIDBeingRespondedTo = m_assoc->nextMsgID - 1;
+
+    if (msgIDBeingRespondedTo != -1)
+    {
+        req->MessageIDBeingRespondedTo = OFstatic_cast(Uint16, msgIDBeingRespondedTo);
+    }
+    else
+    {
+        /* Set message ID responded to. A new message ID is _not_ needed so
+           we do not increment the message ID here but instead have to give the
+           message ID that was used last.
+           Note that that it is required to actually use the message ID of the last
+           C-FIND/GET/MOVE that was issued on this presentation context channel.
+           However, since we only support synchronous association mode so far,
+           it is enough to take the last message ID used at all.
+           For asynchronous operation, we would have to lookup the message ID
+           of the last C-FIND/GET/MOVE request issued and thus, store this
+           information after sending it.
+         */
+        req->MessageIDBeingRespondedTo = m_assoc->nextMsgID - 1;
+    }
+
     // Announce dataset
     req->DataSetType = DIMSE_DATASET_NULL;
 
@@ -1773,7 +1786,7 @@ OFCondition DcmSCU::sendACTIONRequest(const T_ASC_PresentationContextID presID,
     rspStatusCode                  = actionRsp.DimseStatus;
 
     // Check whether there is a dataset to be received
-    if (actionRsp.DataSetType == DIMSE_DATASET_PRESENT)
+    if (actionRsp.DataSetType != DIMSE_DATASET_NULL)
     {
         // this should never happen
         DcmDataset* tempDataset = NULL;
@@ -1913,7 +1926,7 @@ OFCondition DcmSCU::sendEVENTREPORTRequest(const T_ASC_PresentationContextID pre
     rspStatusCode                            = eventReportRsp.DimseStatus;
 
     // Check whether there is a dataset to be received
-    if (eventReportRsp.DataSetType == DIMSE_DATASET_PRESENT)
+    if (eventReportRsp.DataSetType != DIMSE_DATASET_NULL)
     {
         // this should never happen
         DcmDataset* tempDataset = NULL;
@@ -2188,7 +2201,7 @@ OFCondition DcmSCU::sendNCREATERequest(const T_ASC_PresentationContextID presID,
     }
 
     // If requested, we need to receive the dataset containing the received instance
-    if (response.msg.NCreateRSP.DataSetType == DIMSE_DATASET_PRESENT)
+    if (response.msg.NCreateRSP.DataSetType != DIMSE_DATASET_NULL)
     {
         DcmDataset* respDataset = OFnullptr;
         result = receiveDIMSEDataset(&pcid, &respDataset);
@@ -2320,7 +2333,7 @@ OFCondition DcmSCU::sendNSETRequest(const T_ASC_PresentationContextID presID,
     }
 
     // If requested, we need to receive the dataset containing the received instance
-    if (response.msg.NSetRSP.DataSetType == DIMSE_DATASET_PRESENT)
+    if (response.msg.NSetRSP.DataSetType != DIMSE_DATASET_NULL)
     {
         DcmDataset* respDataset = OFnullptr;
         result = receiveDIMSEDataset(&pcid, &respDataset);
index 0e1d986a38dff0501f7f58f695b9b30a8fb66e41..478c4d287f5405215fffda13948f3908dc3d10f3 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2017-2022, OFFIS e.V.
+ *  Copyright (C) 2017-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -960,7 +960,7 @@ struct NCREATEFixture
     T_ASC_PresentationContextID presIDMpps;
 };
 
-OFTEST(dcmnet_scu_sendNCREATERequest_succeeds_when_optional_createdinstance_is_null)
+OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_succeeds_when_optional_createdinstance_is_null, EF_Slow)
 {
     NCREATEFixture fixture;
 
@@ -974,7 +974,7 @@ OFTEST(dcmnet_scu_sendNCREATERequest_succeeds_when_optional_createdinstance_is_n
     OFStandard::forceSleep(2);
 }
 
-OFTEST(dcmnet_scu_sendNCREATERequest_fails_when_affectedsopinstance_is_empty)
+OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_fails_when_affectedsopinstance_is_empty, EF_Slow)
 {
     NCREATEFixture fixture;
 
@@ -986,7 +986,7 @@ OFTEST(dcmnet_scu_sendNCREATERequest_fails_when_affectedsopinstance_is_empty)
     OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text());
 }
 
-OFTEST(dcmnet_scu_sendNCREATERequest_creates_instance_when_association_was_accepted)
+OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_creates_instance_when_association_was_accepted, EF_Slow)
 {
     NCREATEFixture fixture;
 
@@ -1006,7 +1006,7 @@ OFTEST(dcmnet_scu_sendNCREATERequest_creates_instance_when_association_was_accep
     OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text());
 }
 
-OFTEST(dcmnet_scu_sendNCREATERequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status)
+OFTEST_FLAGS(dcmnet_scu_sendNCREATERequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status, EF_Slow)
 {
     NCREATEFixture fixture;
     Uint16 rspStatusCode = 0;
@@ -1048,7 +1048,7 @@ struct NSETFixture : NCREATEFixture
     DcmDataset* modifiedAttributes;
 };
 
-OFTEST(dcmnet_scu_sendNSETRequest_fails_when_requestedsopinstance_is_empty)
+OFTEST_FLAGS(dcmnet_scu_sendNSETRequest_fails_when_requestedsopinstance_is_empty, EF_Slow)
 {
     NSETFixture fixture;
 
@@ -1061,7 +1061,7 @@ OFTEST(dcmnet_scu_sendNSETRequest_fails_when_requestedsopinstance_is_empty)
     OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text());
 }
 
-OFTEST(dcmnet_scu_sendNSETRequest_succeeds_and_modifies_instance_when_scp_has_instance)
+OFTEST_FLAGS(dcmnet_scu_sendNSETRequest_succeeds_and_modifies_instance_when_scp_has_instance, EF_Slow)
 {
     NSETFixture fixture;
 
@@ -1098,7 +1098,7 @@ OFTEST(dcmnet_scu_sendNSETRequest_succeeds_and_modifies_instance_when_scp_has_in
     OFCHECK_MSG((result = fixture.mppsSCU.releaseAssociation()).good(), result.text());
 }
 
-OFTEST(dcmnet_scu_sendNSETRequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status)
+OFTEST_FLAGS(dcmnet_scu_sendNSETRequest_succeeds_and_sets_responsestatuscode_from_scp_when_scp_sets_error_status, EF_Slow)
 {
     NSETFixture fixture;
 
index 276afb53efc442e514df270fef7d2a51f5345be1..ae2e499305cac5329872b6048f6f11032a69aac2 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016-2021, Open Connections GmbH
+ *  Copyright (C) 2016-2023, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -988,7 +988,7 @@ OFCondition DPMParametricMapIOD::decompress(DcmDataset& dset)
   // If the original transfer syntax could have been lossy, print warning
   if (dset.hasRepresentation(EXS_LittleEndianExplicit, NULL))
   {
-    if ( xfer.isEncapsulated() && (xfer.getXfer() != EXS_RLELossless) && (xfer.getXfer() != EXS_DeflatedLittleEndianExplicit) )
+    if ( xfer.isEncapsulated() && (xfer != EXS_RLELossless) && (xfer != EXS_DeflatedLittleEndianExplicit) )
     {
       DCMPMAP_WARN("Dataset has been compressed using a (possibly) lossy compression scheme (ignored)");
     }
@@ -997,14 +997,14 @@ OFCondition DPMParametricMapIOD::decompress(DcmDataset& dset)
   else if (xfer.isEncapsulated())
   {
     // RLE compression is fine (truly lossless). Deflated is handled internally by DCMTK.
-    if (xfer.getXfer() == EXS_RLELossless)
+    if (xfer == EXS_RLELossless)
     {
       DCMPMAP_DEBUG("DICOM file is RLE-compressed, converting to uncompressed transfer syntax first");
       result = DcmIODUtil::decompress(dset);
     }
     else // We do not accept any transfer syntax that could be lossy compressed
     {
-      DCMPMAP_ERROR("Transfer syntax " << DcmXfer(xfer).getXferName() << " uses lossy compression, not supported for Parametric Map objects!");
+      DCMPMAP_ERROR("Transfer syntax " << xfer.getXferName() << " uses lossy compression, not supported for Parametric Map objects!");
       result = IOD_EC_CannotDecompress;
     }
   }
index 32ecbe08fb2f945304bcfe329ac8e0b172b94262..161b195508cca9f30fe25abc5c2d3115bdea043a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2017, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -66,9 +66,9 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in", "DICOM input image file");
+    cmd.addParam("dcmfile-in",   "DICOM input image file (\"-\" for stdin)");
     cmd.addParam("curvedata-in", "curve data input file (text)");
-    cmd.addParam("dcmfile-out", "DICOM output filename");
+    cmd.addParam("dcmfile-out",  "DICOM output filename (\"-\" for stdout)");
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
      cmd.addOption("--help",           "-h",    "print this help text and exit", OFCommandLine::AF_Exclusive);
index 4f306c0fc92ea37ec8be9a3ff308516a95cd97d5..044a17b3afd74119e96d0d489d88a5fe38fffacd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2022, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -674,7 +674,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmimg-out",                   "DICOM output filename");
+    cmd.addParam("dcmimg-out",                   "DICOM output filename (\"-\" for stdout)");
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
      cmd.addOption("--help",           "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 480975b1a2b9988990c25f88e9ef0f061187ee85..be913140a5795b6ee89099f129e9cb2bb49518a9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2018, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -432,7 +432,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 2);
 
-    cmd.addParam("dcmfile-in", "input DICOM image");
+    cmd.addParam("dcmfile-in", "input DICOM image (\"-\" for stdin)");
     cmd.addParam("bitmap-out", "output DICOM image or PGM bitmap", OFCmdParam::PM_Optional);
 
     cmd.addGroup("general options:");
index 1dd8b9f3d9b27f50e7fa29d05cd7c7fd0d66a1fb..01ec2a72ee5da58fb56610b0af108a281eb7d261 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2021, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -357,8 +357,10 @@ int main(int argc, char *argv[])
       OFString profileName;
       const char *profileNamePtr = dvi.getTargetTLSProfile(opt_printer);
       if (profileNamePtr) profileName = profileNamePtr;
-      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195;  // default
-      if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
+      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996;  // default
+      if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996;
+      else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified;
+      else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
       else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND;
       else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended;
       else if (profileName == "AES") tlsProfile = TSP_Profile_AES;
@@ -397,7 +399,7 @@ int main(int argc, char *argv[])
         OFLOG_FATAL(dcmprscpLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'");
         return 1;
       }
-      if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad())
+      if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad())
       {
         OFLOG_FATAL(dcmprscpLogger, "unable to load certificate from '" << tlsCertificateFile << "'");
         return 1;
index 9f3656a0e4fee7dc99c8f47034447ca242e08a4f..20366cf28f7979b913d9209a028c66634ab374e9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 1999-2021, OFFIS e.V.
+ *  Copyright (C) 1999-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -623,7 +623,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 2);
 
-    cmd.addParam("dcmfile-in", "stored print file(s) to be spooled", OFCmdParam::PM_MultiOptional);
+    cmd.addParam("dcmfile-in", "stored print file(s) to be spooled (\"-\" for stdin)", OFCmdParam::PM_MultiOptional);
 
     cmd.addGroup("general options:");
      cmd.addOption("--help",        "-h",    "print this help text and exit", OFCommandLine::AF_Exclusive);
@@ -882,8 +882,10 @@ int main(int argc, char *argv[])
       OFString profileName;
       const char *profileNamePtr = dvi.getTargetTLSProfile(opt_printer);
       if (profileNamePtr) profileName = profileNamePtr;
-      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195;  // default
-      if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
+      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996;  // default
+      if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996;
+      else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified;
+      else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
       else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND;
       else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended;
       else if (profileName == "AES") tlsProfile = TSP_Profile_AES;
@@ -924,7 +926,7 @@ int main(int argc, char *argv[])
           OFLOG_FATAL(dcmprscuLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'");
           return 1;
         }
-        if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad())
+        if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad())
         {
           OFLOG_FATAL(dcmprscuLogger, "unable to load certificate from '" << tlsCertificateFile << "'");
           return 1;
index 6c559d659b4b4dae8a3cf451fb871c5e30e2a1ad..ada6b164a35a9c17d2810964c52850bf6546b177 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2022, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -119,7 +119,7 @@ static void printResult(
         /* do not print if a DCM_Item as this is not
          * very helpful to distinguish instances.
          */
-        if (dobj != NULL && dobj->getTag().getXTag() != DCM_Item)
+        if (dobj != NULL && dobj->getTag() != DCM_Item)
         {
             char buf[128];
             sprintf(buf, "(%04x,%04x).",
@@ -674,8 +674,7 @@ chkType1AttributeExistance(
     if (!dset->tagExistsWithValue(key)) {
         DcmTag t(key);
         OFLOG_WARN(dcmpschkLogger, MSGe_missingAtt << OFendl
-            << "   Affected attribute: " << t.getXTag()
-            << " " << t.getTagName() << OFendl);
+            << "   Affected attribute: " << t << " " << t.getTagName() << OFendl);
         found = OFFalse;
     }
     return found;
@@ -788,7 +787,7 @@ static int dcmchkMetaHeader(
         meta->findAndGetOFStringArray(tsuid, transferSyntaxUID);
         // is this transfer syntax known ?
         DcmXfer expected(transferSyntaxUID.c_str());
-        if (expected.getXfer() == EXS_Unknown) {
+        if (expected == EXS_Unknown) {
             OFLOG_WARN(dcmpschkLogger, MSGe_wrongAtt << OFendl
                 << "   Unknown Transfer Syntax" << OFendl
                 << "   Affected attribute: " << OFendl
index 67cd9a0d8c423bb3428b93da0aa678bba7fa9451..57a914a79f92214e276c4dd2696546e277c13261 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2021, OFFIS e.V.
+ *  Copyright (C) 1998-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -89,8 +89,8 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in",  "DICOM image file(s) to be read", OFCmdParam::PM_MultiMandatory);
-    cmd.addParam("dcmfile-out", "DICOM presentation state file to be created");
+    cmd.addParam("dcmfile-in",  "DICOM image file(s) to be read\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory);
+    cmd.addParam("dcmfile-out", "DICOM presentation state file to be created\n(\"-\" for stdout)");
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
       cmd.addOption("--help",                 "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index b0d69d187768518c3a2f987ddbb30355d915c7f5..a170b98b67356b23ad28bb727a4edb2d26f58ddb 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1999-2021, OFFIS e.V.
+ *  Copyright (C) 1999-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -152,7 +152,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL + 2);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dcmfile-in", "DICOM image file(s) to be printed", OFCmdParam::PM_MultiMandatory);
+    cmd.addParam("dcmfile-in", "DICOM image file(s) to be printed (\"-\" for stdin)", OFCmdParam::PM_MultiMandatory);
 
     cmd.addGroup("general options:");
      cmd.addOption("--help",              "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 3baab0fc887859bdd05f53313fe208366904ba6d..379834a206fdb259dfd8c69b7a1b42d6ea800389 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1999-2022, OFFIS e.V.
+ *  Copyright (C) 1999-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -1041,8 +1041,10 @@ int main(int argc, char *argv[])
       OFString profileName;
       const char *profileNamePtr = dvi.getTargetTLSProfile(opt_cfgID);
       if (profileNamePtr) profileName = profileNamePtr;
-      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195;  // default
-      if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
+      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996;  // default
+      if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996;
+      else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified;
+      else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
       else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND;
       else if (profileName == "AES") tlsProfile = TSP_Profile_AES;
       else if (profileName == "BASIC") tlsProfile = TSP_Profile_Basic;
@@ -1080,7 +1082,7 @@ int main(int argc, char *argv[])
         OFLOG_FATAL(dcmpsrcvLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'");
         return 1;
       }
-      if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad())
+      if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad())
       {
         OFLOG_FATAL(dcmpsrcvLogger, "unable to load certificate from '" << tlsCertificateFile << "'");
         return 1;
index dd89256afeb5f6c4c5c7153fd1c00e66f406158a..64263d46f12a71111f4ecf7e1bda229572e0a5e1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1999-2022, OFFIS e.V.
+ *  Copyright (C) 1999-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -577,8 +577,10 @@ int main(int argc, char *argv[])
       OFString profileName;
       const char *profileNamePtr = dvi.getTargetTLSProfile(opt_target);
       if (profileNamePtr) profileName = profileNamePtr;
-      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195;  // default
-      if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
+      DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996;  // default
+      if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996;
+      else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified;
+      else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
       else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND;
       else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended;
       else if (profileName == "AES") tlsProfile = TSP_Profile_AES;
@@ -619,7 +621,7 @@ int main(int argc, char *argv[])
           OFLOG_FATAL(dcmpssndLogger, "unable to load private TLS key from '" << tlsPrivateKeyFile<< "'");
           return 1;
         }
-        if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat).bad())
+        if (tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile).bad())
         {
           OFLOG_FATAL(dcmpssndLogger, "unable to load certificate from '" << tlsCertificateFile << "'");
           return 1;
index 42d72010c91d3bc2c687c5085aa4607f631d6812..598acf99fe24ef5bbcdbbdef80c507e7c1f2a789 100644 (file)
@@ -27,11 +27,11 @@ two-dimensional curves.
 \section dcmmkcrv_parameters PARAMETERS
 
 \verbatim
-dcmfile-in    DICOM input image file
+dcmfile-in    DICOM input image file ("-" for stdin)
 
 curvedata-in  curve data input file (text)
 
-dcmfile-out   DICOM output filename
+dcmfile-out   DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmmkcrv_options OPTIONS
@@ -178,6 +178,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmmkcrv_copyright COPYRIGHT
 
-Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index e0d4ffc90e0146791e0c7fbe79407b6bc3b5a7de..abab05fb5d4802a4bfbd325a2b2183006f40a4a9 100644 (file)
@@ -39,7 +39,7 @@ common spread sheet application (e.g. Microsoft Excel).
 \section dcmmklut_parameters PARAMETERS
 
 \verbatim
-dcmimg-out  DICOM output filename
+dcmimg-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmmklut_options OPTIONS
@@ -248,6 +248,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmmklut_copyright COPYRIGHT
 
-Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 8ca1465deeac469b490e574c7d7955b619ddc3a1..af24b90e288915c4d38c0cbae28615da162ebd82 100644 (file)
@@ -29,7 +29,7 @@ and defined in the configuration file.
 \section dcmp2pgm_parameters PARAMETERS
 
 \verbatim
-dcmimage-in  input DICOM image
+dcmimage-in  input DICOM image ("-" for stdin)
 
 bitmap-out   output DICOM image or PGM bitmap
 \endverbatim
@@ -170,6 +170,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmp2pgm_copyright COPYRIGHT
 
-Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 06d95541b34b50cfe7a899c11ea2c183880067c6..d3b263f35845bca4e5b8470fc146d1098a31bf18 100644 (file)
@@ -141,6 +141,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmprscp_copyright COPYRIGHT
 
-Copyright (C) 1999-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1999-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index a1b7dad380066c9250e1958f80966f416959e6ba..a8aebdcab467d706631693ace2c7613fffd74080 100644 (file)
@@ -41,7 +41,7 @@ in which case commands are read periodically from a spool directory.
 \section dcmprscu_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  stored print file(s) to be spooled
+dcmfile-in   stored print file(s) to be spooled ("-" for stdin)
 \endverbatim
 
 \section dcmprscu_options OPTIONS
@@ -201,6 +201,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmprscu_copyright COPYRIGHT
 
-Copyright (C) 1999-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1999-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 94a5b9e7065ef72530c511b65b2d82f3e5939dea..be2c15c78fa7fa486e34953d33c213b897e666b3 100644 (file)
@@ -18,24 +18,23 @@ The \b dcmpschk utility checks DICOM Grayscale Softcopy Presentation State
 objects for conformance with the standard.  The test is performed in three
 phases:
 
-\li Phase 1 checks the Meta-header of the DICOM file.  It is tested whether
-    all required attributes are present, whether the SOP class and instance
-    UIDs match the UIDs in the main object and whether the group length
-    attribute contains a correct value.  The Transfer Syntax of the Meta
-    header is also checked.
-
-\li Phase 2 performs a syntactic check of the values, value representations
-    and value multiplicities for each attribute in the object.  The values
-    present in the object under test are compared with the definitions of the
-    DICOM data dictionary.
-
-\li Phase 3 performs a semantic check of the integrity of the Presentation
-    State.  This phase is omitted when objects of other SOP Classes are
-    encountered.  Phase 1 and 2 can also be applied to other DICOM objects of
-    arbitrary SOP class.
-    It should be noted that \b dcmpschk does not support Presentation States
-    which contain the Mask Module.  These will be rejected with a message
-    that the Mask Module is not supported.
+- Phase 1 checks the Meta-header of the DICOM file.  It is tested whether all
+  required attributes are present, whether the SOP class and instance UIDs
+  match the UIDs in the main object and whether the group length attribute
+  contains a correct value.  The Transfer Syntax of the Meta header is also
+  checked.
+
+- Phase 2 performs a syntactic check of the values, value representations and
+  value multiplicities for each attribute in the object.  The values present in
+  the object under test are compared with the definitions of the DICOM data
+  dictionary.
+
+- Phase 3 performs a semantic check of the integrity of the Presentation State.
+  This phase is omitted when objects of other SOP Classes are encountered.
+  Phase 1 and 2 can also be applied to other DICOM objects of arbitrary SOP
+  class.  It should be noted that \b dcmpschk does not support Presentation
+  States which contain the Mask Module.  These will be rejected with a message
+  that the Mask Module is not supported.
 
 \section dcmpschk_parameters PARAMETERS
 
@@ -132,6 +131,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmpschk_copyright COPYRIGHT
 
-Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index ec6d151020ce3221e258d49114a8f9c0786b70e3..8cd49d63168da886e4d9e6d625b058797c0cdbbe 100644 (file)
@@ -26,9 +26,9 @@ when rendered under control of the presentation state.
 \section dcmpsmk_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM image file(s) to be read
+dcmfile-in   DICOM image file(s) to be read ("-" for stdin)
 
-dcmfile-out  DICOM presentation state file to be created
+dcmfile-out  DICOM presentation state file to be created ("-" for stdout)
 \endverbatim
 
 \section dcmpsmk_options OPTIONS
@@ -245,6 +245,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmpsmk_copyright COPYRIGHT
 
-Copyright (C) 1998-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1998-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 1a6292d5ac441eb5348d90cde7662132d732a9a7..15d091100da6f5fac67bef9c1b00fd9c5240b882 100644 (file)
@@ -24,7 +24,7 @@ which performs communication with the printer.
 \section dcmpsprt_parameters PARAMETERS
 
 \verbatim
-dcmfile-in  DICOM image file(s) to be printed
+dcmfile-in  DICOM image file(s) to be printed ("-" for stdin)
 \endverbatim
 
 \section dcmpsprt_options OPTIONS
@@ -304,7 +304,8 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmpsprt_files FILES
 
-<em>\<etcdir\>/dcmpstat.cfg</em>, <em>\<etcdir\>/printers.cfg</em> - sample configuration files
+<em>\<etcdir\>/dcmpstat.cfg</em>, <em>\<etcdir\>/printers.cfg</em> - sample
+configuration files
 
 \section dcmpsprt_see_also SEE ALSO
 
@@ -312,6 +313,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmpsprt_copyright COPYRIGHT
 
-Copyright (C) 1999-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1999-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 01b8e23a0c8ab091c2c87043489f808f4d57a194..d16cd0b325e2449a471a74abc71ccae0ae7dc1b8 100644 (file)
@@ -3,9 +3,10 @@
 \page mod_dcmpstat dcmpstat: a presentation state library and utility apps
 
 This module contains classes that implement a high-level API for the DICOM
-Softcopy Grayscale Presentation State Storage SOP Class. It also contains various
-support classes that are used by DICOMscope, a free DICOM viewer that has been
-developed as a demonstrator for presentation states. See http://dicom.offis.de/dscope
+Softcopy Grayscale Presentation State Storage SOP Class.  It also contains
+various support classes that are used by DICOMscope, a free DICOM viewer that
+has been developed as a demonstrator for presentation states.
+See https://dicom.offis.de/en/dicomscope/
 
 The main interface classes are:
 \li \b DVPresentationState
index 5209b1cb9ba2899a75d071ac4c2aac9bd8845697..8b93771c12878b78322c72f4d3925dee5af3fdf1 100644 (file)
@@ -509,22 +509,22 @@ WarnUnsignedObjectsInSR = true
 #
 # Select the following security profile when using TLS connections.
 # Known terms are:
-#   BCP195:     BCP 195 TLS Profile (default)
-#   BCP195-ND:  Non-downgrading BCP 195 TLS Profile
-#   BCP195-EX:  Extended BCP 195 TLS Profile
-#   AES:        AES TLS Secure Transport Connection Profile (retired)
-#   BASIC:      Basic TLS Secure Transport Connection Profile (retired)
-#   NULL:       Authenticated unencrypted communication (retired)
+#   BCP195-RFC8996:     BCP 195 RFC 8996 TLS Profile (default)
+#   BCP195:             BCP 195 TLS Profile (retired)
+#   BCP195-ND:          Non-downgrading BCP 195 TLS Profile (retired)
+#   BCP195-EX:          Extended BCP 195 TLS Profile (retired)
+#   AES:                AES TLS Secure Transport Connection Profile (retired)
+#   BASIC:              Basic TLS Secure Transport Connection Profile (retired)
+#   NULL:               Authenticated unencrypted communication (retired)
 #
-# TLSProfile = BCP195
+# TLSProfile = BCP195-RFC8996
 #
 # Note 1: The direct configuration of a list of ciphersuites using the
 # "CipherSuites" configuration setting is not supported anymore;
 # this setting will be ignored.
 #
-# Note 2: The BCP195 profile, which is the default, provides backwards
-# compatibility with older implementations only supporting the AES or
-# BASIC profile.
+# Note 2: Since the retired profiles are not considered secure anymore,
+# their use should be avoided.
 #
 # Note 3: The BASIC profile requires 3DES to be enabled in the OpenSSL
 # library that DCMTK is compiled with. Starting with OpenSSL 1.1.0, this
@@ -961,7 +961,7 @@ Port = 10007
 ImplicitOnly  = false
 DisableNewVRs = false
 UseTLS = true
-TLSProfile = BCP195
+TLSProfile = BCP195-RFC8996
 RandomSeed = store3.rnd
 PeerAuthentication = REQUIRE
 Certificate = sitecert.pem
@@ -1004,7 +1004,7 @@ ImplicitOnly  = false
 DisableNewVRs = false
 BitPreservingMode = false
 UseTLS = true
-TLSProfile = BCP195
+TLSProfile = BCP195-RFC8996
 RandomSeed = receiver.rnd
 PeerAuthentication = REQUIRE
 Certificate = sitecert.pem
@@ -1123,7 +1123,7 @@ SupportsTrim = true
 
 # TLS settings
 UseTLS = true
-TLSProfile = BCP195
+TLSProfile = BCP195-RFC8996
 RandomSeed = iheprt1.rnd
 PeerAuthentication = REQUIRE
 Certificate = sitecert.pem
@@ -1161,7 +1161,7 @@ SupportsPresentationLUT = true
 
 # TLS settings
 UseTLS = true
-TLSProfile = BCP195
+TLSProfile = BCP195-RFC8996
 RandomSeed = iheprt2.rnd
 PeerAuthentication = REQUIRE
 Certificate = sitecert.pem
index d903ab567bd35b7763179ee33b3a14372457088f..0d6ca23cce49ed501e127103717c2674bb0ad30d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2022, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -3677,21 +3677,16 @@ OFCondition DVInterface::terminatePrintServer()
           DcmTLSTransportLayer *tLayer = new DcmTLSTransportLayer(NET_REQUESTOR, tlsRandomSeedFile.c_str(), OFTrue);
           if (tLayer)
           {
-            if (tlsCACertificateFolder) tLayer->addTrustedCertificateDir(tlsCACertificateFolder, keyFileFormat);
-            if (tlsDHParametersFile.size() > 0) tLayer->setTempDHParameters(tlsDHParametersFile.c_str());
-            tLayer->setPrivateKeyPasswd(tlsPrivateKeyPassword); // never prompt on console
-            tLayer->setPrivateKeyFile(tlsPrivateKeyFile.c_str(), keyFileFormat);
-            tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat);
-            tLayer->setCertificateVerification(DCV_ignoreCertificate);
-
-           // determine TLS profile
-             OFString profileName;
+            // determine TLS profile
+            OFString profileName;
             const char *profileNamePtr = getTargetTLSProfile(target);
             if (profileNamePtr) profileName = profileNamePtr;
-            DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP195;  // default
-            if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND;
-            else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended;
+            DcmTLSSecurityProfile tlsProfile = TSP_Profile_BCP_195_RFC_8996;  // default
+            if (profileName == "BCP195-RFC8996") tlsProfile = TSP_Profile_BCP_195_RFC_8996;
+            else if (profileName == "BCP195-RFC8996-MOD") tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified;
             else if (profileName == "BCP195") tlsProfile = TSP_Profile_BCP195;
+            else if (profileName == "BCP195-ND") tlsProfile = TSP_Profile_BCP195_ND;
+            else if (profileName == "BCP195-EX") tlsProfile = TSP_Profile_BCP195_Extended;
             else if (profileName == "AES") tlsProfile = TSP_Profile_AES;
             else if (profileName == "BASIC") tlsProfile = TSP_Profile_Basic;
             else if (profileName == "NULL") tlsProfile = TSP_Profile_IHE_ATNA_Unencrypted;
@@ -3702,6 +3697,14 @@ OFCondition DVInterface::terminatePrintServer()
             // activate cipher suites
             (void) tLayer->activateCipherSuites();
 
+            // set certificate, private key, DH parameters etc.
+            if (tlsCACertificateFolder) tLayer->addTrustedCertificateDir(tlsCACertificateFolder, keyFileFormat);
+            if (tlsDHParametersFile.size() > 0) tLayer->setTempDHParameters(tlsDHParametersFile.c_str());
+            tLayer->setPrivateKeyPasswd(tlsPrivateKeyPassword); // never prompt on console
+            tLayer->setPrivateKeyFile(tlsPrivateKeyFile.c_str(), keyFileFormat);
+            tLayer->setCertificateFile(tlsCertificateFile.c_str(), keyFileFormat, tlsProfile);
+            tLayer->setCertificateVerification(DCV_ignoreCertificate);
+
             ASC_setTransportLayer(net, tLayer, 1);
           }
 #else
index 4496d4940cefbc05a36c277a7b9729cf2da12c00..6986bc05aeceb973ed3185e810c4f3727eaa70d1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2018, OFFIS e.V.
+ *  Copyright (C) 1998-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -160,10 +160,10 @@ OFCondition DVPSGraphicAnnotation::addImageReference(
     DVPSObjectApplicability applicability)
 {
   if ((sopclassUID==NULL)||(instanceUID==NULL)||(applicability==DVPSB_allImages)) return EC_IllegalCall;
+  char frameString[24];
   const char *framenumber=NULL;
   if (applicability==DVPSB_currentFrame)
   {
-    char frameString[100];
     sprintf(frameString, "%ld", frame);
     framenumber = frameString;
   }
index f407f2da6603ad7a529bd1634ce8644fd64cce7f..cb0edf681aac3ae1634f19d392a52ab050e4cada 100644 (file)
@@ -123,7 +123,7 @@ OFCondition DVPSPrintMessageHandler::sendNRequest(
         {
           /* handle N-EVENT-REPORT-RQ */
           rspDataset = NULL;
-          if (response.msg.NEventReportRQ.DataSetType == DIMSE_DATASET_PRESENT)
+          if (response.msg.NEventReportRQ.DataSetType != DIMSE_DATASET_NULL)
           {
             cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &thisPresId, &rspDataset, NULL, NULL);
             if (cond.bad()) return cond;
@@ -197,7 +197,7 @@ OFCondition DVPSPrintMessageHandler::sendNRequest(
             return makeDcmnetCondition(DIMSEC_UNEXPECTEDRESPONSE, OF_error, buf1);
           }
           rspDataset = NULL;
-          if (responseDataset == DIMSE_DATASET_PRESENT)
+          if (responseDataset != DIMSE_DATASET_NULL)
           {
             cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &thisPresId, &rspDataset, NULL, NULL);
             if (cond.bad()) return cond;
index 3633fd6e14d7862a53b47d98aafc4984006436e6..5f13c16cb3a9773dd0e60dc9882621ad51caa558 100644 (file)
@@ -415,7 +415,7 @@ OFCondition DVPSPrintSCP::handleNGet(T_DIMSE_Message& rq, T_ASC_PresentationCont
   OFCondition cond = EC_Normal;
   DcmDataset *rspDataset = NULL;
 
-  if (rq.msg.NGetRQ.DataSetType == DIMSE_DATASET_PRESENT)
+  if (rq.msg.NGetRQ.DataSetType != DIMSE_DATASET_NULL)
   {
      DcmDataset *dataset = NULL;
      // should not happen
@@ -473,7 +473,7 @@ OFCondition DVPSPrintSCP::handleNSet(T_DIMSE_Message& rq, T_ASC_PresentationCont
   DcmDataset *rqDataset = NULL;
   DcmDataset *rspDataset = NULL;
 
-  if (rq.msg.NSetRQ.DataSetType == DIMSE_DATASET_PRESENT)
+  if (rq.msg.NSetRQ.DataSetType != DIMSE_DATASET_NULL)
   {
      cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &presID, &rqDataset, NULL, NULL);
      if (cond.bad()) return cond;
@@ -533,7 +533,7 @@ OFCondition DVPSPrintSCP::handleNAction(T_DIMSE_Message& rq, T_ASC_PresentationC
   OFCondition cond = EC_Normal;
   DcmDataset *rqDataset = NULL;
 
-  if (rq.msg.NActionRQ.DataSetType == DIMSE_DATASET_PRESENT)
+  if (rq.msg.NActionRQ.DataSetType != DIMSE_DATASET_NULL)
   {
      cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &presID, &rqDataset, NULL, NULL);
      if (cond.bad()) return cond;
@@ -601,7 +601,7 @@ OFCondition DVPSPrintSCP::handleNCreate(T_DIMSE_Message& rq, T_ASC_PresentationC
   DcmDataset *rqDataset = NULL;
   DcmDataset *rspDataset = NULL;
 
-  if (rq.msg.NCreateRQ.DataSetType == DIMSE_DATASET_PRESENT)
+  if (rq.msg.NCreateRQ.DataSetType != DIMSE_DATASET_NULL)
   {
      cond = DIMSE_receiveDataSetInMemory(assoc, blockMode, timeout, &presID, &rqDataset, NULL, NULL);
      if (cond.bad()) return cond;
@@ -658,7 +658,7 @@ OFCondition DVPSPrintSCP::handleNDelete(T_DIMSE_Message& rq, T_ASC_PresentationC
   rsp.msg.NDeleteRSP.opts = 0;
 
   OFCondition cond = EC_Normal;
-  if (rq.msg.NDeleteRQ.DataSetType == DIMSE_DATASET_PRESENT)
+  if (rq.msg.NDeleteRQ.DataSetType != DIMSE_DATASET_NULL)
   {
      // should not happen
      DcmDataset *dataset = NULL;
index 843a030816ce4815f100c39acb6bcb299a3e7558..793e69063a5546c08a3e1c670cf6598c97d8c1cd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2010, OFFIS e.V.
+ *  Copyright (C) 1998-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -218,9 +218,9 @@ OFCondition DVPSReferencedImage_PList::addImageReference(
 {
   if ((sopclassUID==NULL)||(instanceUID==NULL)||(applicability==DVPSB_allImages)) return EC_IllegalCall;
   const char *framenumber=NULL;
+  char frameString[24];
   if (applicability==DVPSB_currentFrame)
   {
-    char frameString[100];
     sprintf(frameString, "%ld", frame);
     framenumber = frameString;
   }
index 79a23943897e4410ca304394c29ce4ad8076c8cc..d1532db5c29d7b1eb2940ba7a62708201b169902 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1999-2021, OFFIS e.V.
+ *  Copyright (C) 1999-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -42,7 +42,7 @@ DVPSSoftcopyVOI_PList::DVPSSoftcopyVOI_PList(const DVPSSoftcopyVOI_PList &arg)
   OFListConstIterator(DVPSSoftcopyVOI *) first = arg.list_.begin();
   OFListConstIterator(DVPSSoftcopyVOI *) last = arg.list_.end();
   while (first != last)
-  {     
+  {
     list_.push_back((*first)->clone());
     ++first;
   }
@@ -58,7 +58,7 @@ void DVPSSoftcopyVOI_PList::clear()
   OFListIterator(DVPSSoftcopyVOI *) first = list_.begin();
   OFListIterator(DVPSSoftcopyVOI *) last = list_.end();
   while (first != last)
-  {     
+  {
     delete (*first);
     first = list_.erase(first);
   }
@@ -71,7 +71,7 @@ OFCondition DVPSSoftcopyVOI_PList::read(DcmItem &dset)
   DVPSSoftcopyVOI *newImage = NULL;
   DcmSequenceOfItems *dseq=NULL;
   DcmItem *ditem=NULL;
-  
+
   if (EC_Normal == dset.search(DCM_SoftcopyVOILUTSequence, stack, ESM_fromHere, OFFalse))
   {
     dseq=(DcmSequenceOfItems *)stack.top();
@@ -85,12 +85,13 @@ OFCondition DVPSSoftcopyVOI_PList::read(DcmItem &dset)
         if (newImage && ditem)
         {
           result = newImage->read(*ditem);
+          if (result.bad()) return result;
           list_.push_back(newImage);
-        } else result = EC_MemoryExhausted;
+        } else return EC_MemoryExhausted;
       }
     }
-  }    
-  
+  }
+
   return result;
 }
 
@@ -140,13 +141,13 @@ DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::findSoftcopyVOI(const char *instanceUID,
 
 DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::createSoftcopyVOI(
     DVPSReferencedSeries_PList& allReferences,
-    const char *sopclassUID, 
-    const char *instanceUID, 
-    unsigned long frame, 
-    unsigned long numberOfFrames, 
+    const char *sopclassUID,
+    const char *instanceUID,
+    unsigned long frame,
+    unsigned long numberOfFrames,
     DVPSObjectApplicability applicability)
 {
-  
+
   DVPSSoftcopyVOI *oldArea = findSoftcopyVOI(instanceUID, frame);
   DVPSSoftcopyVOI *newArea = NULL;
   if (oldArea == NULL) newArea = new DVPSSoftcopyVOI();
@@ -178,7 +179,7 @@ DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::createSoftcopyVOI(
         break;
       case DVPSB_allImages:
         clear(); // delete all softcopy VOI LUT items
-        break;  
+        break;
     }
   }
 
@@ -192,9 +193,9 @@ DVPSSoftcopyVOI *DVPSSoftcopyVOI_PList::createSoftcopyVOI(
 
 void DVPSSoftcopyVOI_PList::removeSoftcopyVOI(
     DVPSReferencedSeries_PList& allReferences,
-    const char *instanceUID, 
-    unsigned long frame, 
-    unsigned long numberOfFrames, 
+    const char *instanceUID,
+    unsigned long frame,
+    unsigned long numberOfFrames,
     DVPSObjectApplicability applicability)
 {
   OFListIterator(DVPSSoftcopyVOI *) first = list_.begin();
@@ -215,20 +216,20 @@ void DVPSSoftcopyVOI_PList::removeSoftcopyVOI(
       break;
     case DVPSB_allImages:
       clear(); // delete all softcopy VOI LUT items
-      break;  
+      break;
   }
   return;
 }
 
 OFCondition DVPSSoftcopyVOI_PList::createFromImage(
-    DcmItem &dset, 
+    DcmItem &dset,
     DVPSReferencedSeries_PList& allReferences,
-    const char *sopclassUID, 
-    const char *instanceUID, 
+    const char *sopclassUID,
+    const char *instanceUID,
     DVPSVOIActivation voiActivation)
 {
   if (voiActivation == DVPSV_ignoreVOI) return EC_Normal;
-  
+
   OFCondition result = EC_Normal;
   DcmStack stack;
   DcmSequenceOfItems *seq;
@@ -255,19 +256,19 @@ OFCondition DVPSSoftcopyVOI_PList::createFromImage(
       {
          item = seq->getItem(0);
          stack.clear();
-         if (EC_Normal == item->search((DcmTagKey &)voiLUTDescriptor.getTag(), 
+         if (EC_Normal == item->search((DcmTagKey &)voiLUTDescriptor.getTag(),
            stack, ESM_fromHere, OFFalse))
          {
            voiLUTDescriptor = *((DcmUnsignedShort *)(stack.top()));
          }
          stack.clear();
-         if (EC_Normal == item->search((DcmTagKey &)voiLUTExplanation.getTag(), 
+         if (EC_Normal == item->search((DcmTagKey &)voiLUTExplanation.getTag(),
            stack, ESM_fromHere, OFFalse))
          {
            voiLUTExplanation = *((DcmLongString *)(stack.top()));
          }
          stack.clear();
-         if (EC_Normal == item->search((DcmTagKey &)voiLUTData.getTag(), 
+         if (EC_Normal == item->search((DcmTagKey &)voiLUTData.getTag(),
            stack, ESM_fromHere, OFFalse))
          {
            voiLUTData = *((DcmUnsignedShort *)(stack.top()));
@@ -278,7 +279,7 @@ OFCondition DVPSSoftcopyVOI_PList::createFromImage(
 
   OFBool haveWindow = ((windowCenter.getVM() > 0) && (windowWidth.getVM() > 0));
   OFBool haveLUT = ((voiLUTDescriptor.getVM() == 3) && (voiLUTData.getLength() > 0));
-  
+
   if (result==EC_Normal)
   {
     DVPSSoftcopyVOI *voi = NULL;
index b7b2ddbd022b98c788e86f950d375e157dd22cfb..1914ee3fb4df2a899e775163e34faa6884e278c3 100644 (file)
@@ -743,6 +743,7 @@ RETIRED_NuclearMedicineImageStorage                  1.2.840.10008.5.1.4.1.1.5
 RETIRED_UltrasoundImageStorage                       1.2.840.10008.5.1.4.1.1.6
 UltrasoundImageStorage                               1.2.840.10008.5.1.4.1.1.6.1
 EnhancedUSVolumeStorage                              1.2.840.10008.5.1.4.1.1.6.2
+PhotoacousticImageStorage                            1.2.840.10008.5.1.4.1.1.6.3
 SecondaryCaptureImageStorage                         1.2.840.10008.5.1.4.1.1.7
 MultiframeSingleBitSecondaryCaptureImageStorage      1.2.840.10008.5.1.4.1.1.7.1
 MultiframeGrayscaleByteSecondaryCaptureImageStorage  1.2.840.10008.5.1.4.1.1.7.2
@@ -754,6 +755,7 @@ DRAFT_WaveformStorage                                1.2.840.10008.5.1.4.1.1.9.1
 TwelveLeadECGWaveformStorage                         1.2.840.10008.5.1.4.1.1.9.1.1
 GeneralECGWaveformStorage                            1.2.840.10008.5.1.4.1.1.9.1.2
 AmbulatoryECGWaveformStorage                         1.2.840.10008.5.1.4.1.1.9.1.3
+General32BitECGWaveformStorage                       1.2.840.10008.5.1.4.1.1.9.1.4
 HemodynamicWaveformStorage                           1.2.840.10008.5.1.4.1.1.9.2.1
 CardiacElectrophysiologyWaveformStorage              1.2.840.10008.5.1.4.1.1.9.3.1
 BasicVoiceAudioWaveformStorage                       1.2.840.10008.5.1.4.1.1.9.4.1
@@ -779,6 +781,7 @@ AdvancedBlendingPresentationStateStorage             1.2.840.10008.5.1.4.1.1.11.
 VolumeRenderingVolumetricPresentationStateStorage    1.2.840.10008.5.1.4.1.1.11.9
 SegmentedVolumeRenderingVolumetricPres.StateStorage  1.2.840.10008.5.1.4.1.1.11.10
 MultipleVolumeRenderingVolumetricPres.StateStorage   1.2.840.10008.5.1.4.1.1.11.11
+VariableModalityLUTSoftcopyPresentationStateStorage  1.2.840.10008.5.1.4.1.1.11.12
 XRayAngiographicImageStorage                         1.2.840.10008.5.1.4.1.1.12.1
 EnhancedXAImageStorage                               1.2.840.10008.5.1.4.1.1.12.1.1
 XRayRadiofluoroscopicImageStorage                    1.2.840.10008.5.1.4.1.1.12.2
@@ -893,6 +896,9 @@ CArmPhotonElectronRadiationRecordStorage             1.2.840.10008.5.1.4.1.1.481
 RoboticRadiationRecordStorage                        1.2.840.10008.5.1.4.1.1.481.20
 RTRadiationSetDeliveryInstructionStorage             1.2.840.10008.5.1.4.1.1.481.21
 RTTreatmentPreparationStorage                        1.2.840.10008.5.1.4.1.1.481.22
+EnhancedRTImageStorage                               1.2.840.10008.5.1.4.1.1.481.23
+EnhancedContinuousRTImageStorage                     1.2.840.10008.5.1.4.1.1.481.24
+RTPatientPositionAcquisitionInstructionStorage       1.2.840.10008.5.1.4.1.1.481.25
 DICOS_CTImageStorage                                 1.2.840.10008.5.1.4.1.1.501.1
 DICOS_DigitalXRayImageStorageForPresentation         1.2.840.10008.5.1.4.1.1.501.2.1
 DICOS_DigitalXRayImageStorageForProcessing           1.2.840.10008.5.1.4.1.1.501.2.2
@@ -1098,6 +1104,6 @@ profiles
 
 \section dcmqrscp_copyright COPYRIGHT
 
-Copyright (C) 1993-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1993-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index efbd8d3f3820cf5125054d599a068f2548f58718..96badec3dca73ed4cb0860d5666797e96cc5a664 100644 (file)
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2017-2022, OFFIS e.V.
+#  Copyright (C) 2017-2023, OFFIS e.V.
 #  All rights reserved.  See COPYRIGHT file for details.
 #
 #  This software and supporting documentation were developed by
 #
 #  Module:  dcmqrdb
 #
-#  Author:  Jan Schlamelcher
+#  Author:  Jan Schlamelcher, Joerg Riesmeier
 #
 #  Purpose: Sample storage profiles configuration file for dcmqrscp
+#           (see "dcmnet/docs/asconfig.txt" for documentation)
 #
 
 # ============================================================================
 [[TransferSyntaxes]]
 # ============================================================================
+#
+# Please note that the Storage SCP will prefer the first entry in the selected
+# list of transfer syntaxes that is acceptable, i.e. that it matches one of the
+# transfer syntaxes proposed by the Storage SCU.
+#
 
 [Uncompressed]
 TransferSyntax1  = LocalEndianExplicit
@@ -46,6 +52,10 @@ TransferSyntax1 = MPEG2MainProfile@MainLevel
 # commented out the following line since we do not support transcoding of MPEG2
 #
 #TransferSyntax2 = MPEG2MainProfile@HighLevel
+#
+# (there are also MPEG2 transfer syntaxes that allow the encapsulated stream
+#  of encoded pixel data to be split into one or more fragments, see below)
+#
 
 [MPEG4]
 TransferSyntax1 = MPEG4HighProfile/Level4.1
@@ -56,6 +66,10 @@ TransferSyntax1 = MPEG4HighProfile/Level4.1
 #TransferSyntax3 = MPEG4HighProfile/Level4.2For2DVideo
 #TransferSyntax4 = MPEG4HighProfile/Level4.2For3DVideo
 #TransferSyntax5 = MPEG4StereoHighProfile/Level4.2
+#
+# (there are also MPEG4 transfer syntaxes that allow the encapsulated stream
+#  of encoded pixel data to be split into one or more fragments, see below)
+#
 
 [AnyTransferSyntax]
 TransferSyntax1  = JPEGBaseline
@@ -90,12 +104,19 @@ TransferSyntax29 = MPEG4BDcompatibleHighProfile/Level4.1
 TransferSyntax30 = MPEG4HighProfile/Level4.2For2DVideo
 TransferSyntax31 = MPEG4HighProfile/Level4.2For3DVideo
 TransferSyntax32 = MPEG4StereoHighProfile/Level4.2
-TransferSyntax33 = HEVCMainProfile/Level5.1
-TransferSyntax34 = HEVCMain10Profile/Level5.1
-TransferSyntax35 = DeflatedLittleEndianExplicit
-TransferSyntax36 = LocalEndianExplicit
-TransferSyntax37 = OppositeEndianExplicit
-TransferSyntax38 = LittleEndianImplicit
+TransferSyntax33 = FragmentableMPEG2MainProfile/MainLevel
+TransferSyntax34 = FragmentableMPEG2MainProfile/HighLevel
+TransferSyntax35 = FragmentableMPEG4HighProfile/Level4.1
+TransferSyntax36 = FragmentableMPEG4BDcompatibleHighProfile/Level4.1
+TransferSyntax37 = FragmentableMPEG4HighProfile/Level4.2For2DVideo
+TransferSyntax38 = FragmentableMPEG4HighProfile/Level4.2For3DVideo
+TransferSyntax39 = FragmentableMPEG4StereoHighProfile/Level4.2
+TransferSyntax40 = HEVCMainProfile/Level5.1
+TransferSyntax41 = HEVCMain10Profile/Level5.1
+TransferSyntax42 = DeflatedLittleEndianExplicit
+TransferSyntax43 = LocalEndianExplicit
+TransferSyntax44 = OppositeEndianExplicit
+TransferSyntax45 = LittleEndianImplicit
 
 # ============================================================================
 [[PresentationContexts]]
@@ -110,6 +131,9 @@ PresentationContext1   = VerificationSOPClass\Uncompressed
 # Accept image SOP classes with virtually any transfer syntax we know.
 # Accept non-image SOP classes uncompressed or with zlib compression only.
 #
+# Please do not add any Storage SOP Class that does not fit into the
+# PATIENT-STUDY-SERIES-INSTANCE information model.
+#
 PresentationContext2   = BreastProjectionXRayImageStorageForPresentation\AnyTransferSyntax
 PresentationContext3   = BreastProjectionXRayImageStorageForProcessing\AnyTransferSyntax
 PresentationContext4   = BreastTomosynthesisImageStorage\AnyTransferSyntax
@@ -123,204 +147,212 @@ PresentationContext11  = DigitalMammographyXRayImageStorageForPresentation\AnyTr
 PresentationContext12  = DigitalMammographyXRayImageStorageForProcessing\AnyTransferSyntax
 PresentationContext13  = DigitalXRayImageStorageForPresentation\AnyTransferSyntax
 PresentationContext14  = DigitalXRayImageStorageForProcessing\AnyTransferSyntax
-PresentationContext15  = EnhancedCTImageStorage\AnyTransferSyntax
-PresentationContext16  = EnhancedMRColorImageStorage\AnyTransferSyntax
-PresentationContext17  = EnhancedMRImageStorage\AnyTransferSyntax
-PresentationContext18  = EnhancedPETImageStorage\AnyTransferSyntax
-PresentationContext19  = EnhancedUSVolumeStorage\AnyTransferSyntax
-PresentationContext20  = EnhancedXAImageStorage\AnyTransferSyntax
-PresentationContext21  = EnhancedXRFImageStorage\AnyTransferSyntax
-PresentationContext22  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax
-PresentationContext23  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax
-PresentationContext24  = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax
-PresentationContext25  = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax
-PresentationContext26  = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax
-PresentationContext27  = MRImageStorage\AnyTransferSyntax
-PresentationContext28  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext29  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext30  = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext31  = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext32  = NuclearMedicineImageStorage\AnyTransferSyntax
-PresentationContext33  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax
-PresentationContext34  = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax
-PresentationContext35  = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax
-PresentationContext36  = OphthalmicThicknessMapStorage\AnyTransferSyntax
-PresentationContext37  = OphthalmicTomographyImageStorage\AnyTransferSyntax
-PresentationContext38  = PositronEmissionTomographyImageStorage\AnyTransferSyntax
-PresentationContext39  = RTImageStorage\AnyTransferSyntax
-PresentationContext40  = SecondaryCaptureImageStorage\AnyTransferSyntax
-PresentationContext41  = UltrasoundImageStorage\AnyTransferSyntax
-PresentationContext42  = UltrasoundMultiframeImageStorage\AnyTransferSyntax
-PresentationContext43  = VLEndoscopicImageStorage\AnyTransferSyntax
-PresentationContext44  = VLMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext45  = VLPhotographicImageStorage\AnyTransferSyntax
-PresentationContext46  = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext47  = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax
-PresentationContext48  = VideoEndoscopicImageStorage\AnyTransferSyntax
-PresentationContext49  = VideoMicroscopicImageStorage\AnyTransferSyntax
-PresentationContext50  = VideoPhotographicImageStorage\AnyTransferSyntax
-PresentationContext51  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax
-PresentationContext52  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax
-PresentationContext53  = XRay3DAngiographicImageStorage\AnyTransferSyntax
-PresentationContext54  = XRay3DCraniofacialImageStorage\AnyTransferSyntax
-PresentationContext55  = XRayAngiographicImageStorage\AnyTransferSyntax
-PresentationContext56  = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax
+PresentationContext15  = EnhancedContinuousRTImageStorage\AnyTransferSyntax
+PresentationContext16  = EnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext17  = EnhancedMRColorImageStorage\AnyTransferSyntax
+PresentationContext18  = EnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext19  = EnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext20  = EnhancedRTImageStorage\AnyTransferSyntax
+PresentationContext21  = EnhancedUSVolumeStorage\AnyTransferSyntax
+PresentationContext22  = EnhancedXAImageStorage\AnyTransferSyntax
+PresentationContext23  = EnhancedXRFImageStorage\AnyTransferSyntax
+PresentationContext24  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\AnyTransferSyntax
+PresentationContext25  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\AnyTransferSyntax
+PresentationContext26  = LegacyConvertedEnhancedCTImageStorage\AnyTransferSyntax
+PresentationContext27  = LegacyConvertedEnhancedMRImageStorage\AnyTransferSyntax
+PresentationContext28  = LegacyConvertedEnhancedPETImageStorage\AnyTransferSyntax
+PresentationContext29  = MRImageStorage\AnyTransferSyntax
+PresentationContext30  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext31  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext32  = MultiframeSingleBitSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext33  = MultiframeTrueColorSecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext34  = NuclearMedicineImageStorage\AnyTransferSyntax
+PresentationContext35  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\AnyTransferSyntax
+PresentationContext36  = OphthalmicPhotography16BitImageStorage\AnyTransferSyntax
+PresentationContext37  = OphthalmicPhotography8BitImageStorage\AnyTransferSyntax
+PresentationContext38  = OphthalmicThicknessMapStorage\AnyTransferSyntax
+PresentationContext39  = OphthalmicTomographyImageStorage\AnyTransferSyntax
+PresentationContext40  = PhotoacousticImageStorage\AnyTransferSyntax
+PresentationContext41  = PositronEmissionTomographyImageStorage\AnyTransferSyntax
+PresentationContext42  = RTImageStorage\AnyTransferSyntax
+PresentationContext43  = SecondaryCaptureImageStorage\AnyTransferSyntax
+PresentationContext44  = UltrasoundImageStorage\AnyTransferSyntax
+PresentationContext45  = UltrasoundMultiframeImageStorage\AnyTransferSyntax
+PresentationContext46  = VLEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext47  = VLMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext48  = VLPhotographicImageStorage\AnyTransferSyntax
+PresentationContext49  = VLSlideCoordinatesMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext50  = VLWholeSlideMicroscopyImageStorage\AnyTransferSyntax
+PresentationContext51  = VideoEndoscopicImageStorage\AnyTransferSyntax
+PresentationContext52  = VideoMicroscopicImageStorage\AnyTransferSyntax
+PresentationContext53  = VideoPhotographicImageStorage\AnyTransferSyntax
+PresentationContext54  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\AnyTransferSyntax
+PresentationContext55  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\AnyTransferSyntax
+PresentationContext56  = XRay3DAngiographicImageStorage\AnyTransferSyntax
+PresentationContext57  = XRay3DCraniofacialImageStorage\AnyTransferSyntax
+PresentationContext58  = XRayAngiographicImageStorage\AnyTransferSyntax
+PresentationContext59  = XRayRadiofluoroscopicImageStorage\AnyTransferSyntax
 #
 # retired image SOP classes
 #
-PresentationContext57  = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax
-PresentationContext58  = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax
-PresentationContext59  = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax
-PresentationContext60  = RETIRED_UltrasoundImageStorage\AnyTransferSyntax
-PresentationContext61  = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax
-PresentationContext62  = RETIRED_VLImageStorage\AnyTransferSyntax
-PresentationContext63  = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax
-PresentationContext64  = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax
+PresentationContext60  = RETIRED_HardcopyColorImageStorage\AnyTransferSyntax
+PresentationContext61  = RETIRED_HardcopyGrayscaleImageStorage\AnyTransferSyntax
+PresentationContext62  = RETIRED_NuclearMedicineImageStorage\AnyTransferSyntax
+PresentationContext63  = RETIRED_UltrasoundImageStorage\AnyTransferSyntax
+PresentationContext64  = RETIRED_UltrasoundMultiframeImageStorage\AnyTransferSyntax
+PresentationContext65  = RETIRED_VLImageStorage\AnyTransferSyntax
+PresentationContext66  = RETIRED_VLMultiframeImageStorage\AnyTransferSyntax
+PresentationContext67  = RETIRED_XRayAngiographicBiPlaneImageStorage\AnyTransferSyntax
 #
 # the following presentation contexts are for non-image SOP classes
 #
-PresentationContext65  = AcquisitionContextSRStorage\UncompressedOrZlib
-PresentationContext66  = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib
-PresentationContext67  = AmbulatoryECGWaveformStorage\UncompressedOrZlib
-PresentationContext68  = ArterialPulseWaveformStorage\UncompressedOrZlib
-PresentationContext69  = AutorefractionMeasurementsStorage\UncompressedOrZlib
-PresentationContext70  = BasicStructuredDisplayStorage\UncompressedOrZlib
-PresentationContext71  = BasicTextSRStorage\UncompressedOrZlib
-PresentationContext72  = BasicVoiceAudioWaveformStorage\UncompressedOrZlib
-PresentationContext73  = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext74  = BodyPositionWaveformStorage\UncompressedOrZlib
-PresentationContext75  = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib
-PresentationContext76  = CArmPhotonElectronRadiationStorage\UncompressedOrZlib
-PresentationContext77  = CTDefinedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext78  = CTPerformedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext79  = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib
-PresentationContext80  = ChestCADSRStorage\UncompressedOrZlib
-PresentationContext81  = ColonCADSRStorage\UncompressedOrZlib
-PresentationContext82  = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext83  = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext84  = Comprehensive3DSRStorage\UncompressedOrZlib
-PresentationContext85  = ComprehensiveSRStorage\UncompressedOrZlib
-PresentationContext86  = ContentAssessmentResultsStorage\UncompressedOrZlib
-PresentationContext87  = DeformableSpatialRegistrationStorage\UncompressedOrZlib
-PresentationContext88  = ElectromyogramWaveformStorage\UncompressedOrZlib
-PresentationContext89  = ElectrooculogramWaveformStorage\UncompressedOrZlib
-PresentationContext90  = EncapsulatedCDAStorage\UncompressedOrZlib
-PresentationContext91  = EncapsulatedMTLStorage\UncompressedOrZlib
-PresentationContext92  = EncapsulatedOBJStorage\UncompressedOrZlib
-PresentationContext93  = EncapsulatedPDFStorage\UncompressedOrZlib
-PresentationContext94  = EncapsulatedSTLStorage\UncompressedOrZlib
-PresentationContext95  = EnhancedSRStorage\UncompressedOrZlib
-PresentationContext96  = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext97  = ExtensibleSRStorage\UncompressedOrZlib
-PresentationContext98  = GeneralAudioWaveformStorage\UncompressedOrZlib
-PresentationContext99  = GeneralECGWaveformStorage\UncompressedOrZlib
-PresentationContext100 = GenericImplantTemplateStorage\UncompressedOrZlib
-PresentationContext101 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext102 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext103 = HangingProtocolStorage\UncompressedOrZlib
-PresentationContext104 = HemodynamicWaveformStorage\UncompressedOrZlib
-PresentationContext105 = ImplantAssemblyTemplateStorage\UncompressedOrZlib
-PresentationContext106 = ImplantTemplateGroupStorage\UncompressedOrZlib
-PresentationContext107 = ImplantationPlanSRStorage\UncompressedOrZlib
-PresentationContext108 = IntraocularLensCalculationsStorage\UncompressedOrZlib
-PresentationContext109 = KeratometryMeasurementsStorage\UncompressedOrZlib
-PresentationContext110 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib
-PresentationContext111 = LensometryMeasurementsStorage\UncompressedOrZlib
-PresentationContext112 = MRSpectroscopyStorage\UncompressedOrZlib
-PresentationContext113 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib
-PresentationContext114 = MammographyCADSRStorage\UncompressedOrZlib
-PresentationContext115 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib
-PresentationContext116 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib
-PresentationContext117 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext118 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib
-PresentationContext119 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib
-PresentationContext120 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib
-PresentationContext121 = ParametricMapStorage\UncompressedOrZlib
-PresentationContext122 = PatientRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext123 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib
-PresentationContext124 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib
-PresentationContext125 = ProcedureLogStorage\UncompressedOrZlib
-PresentationContext126 = ProtocolApprovalStorage\UncompressedOrZlib
-PresentationContext127 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext128 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext129 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext130 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext131 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext132 = RTDoseStorage\UncompressedOrZlib
-PresentationContext133 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib
-PresentationContext134 = RTIonPlanStorage\UncompressedOrZlib
-PresentationContext135 = RTPhysicianIntentStorage\UncompressedOrZlib
-PresentationContext136 = RTPlanStorage\UncompressedOrZlib
-PresentationContext137 = RTRadiationRecordSetStorage\UncompressedOrZlib
-PresentationContext138 = RTRadiationSalvageRecordStorage\UncompressedOrZlib
-PresentationContext139 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext140 = RTRadiationSetStorage\UncompressedOrZlib
-PresentationContext141 = RTSegmentAnnotationStorage\UncompressedOrZlib
-PresentationContext142 = RTStructureSetStorage\UncompressedOrZlib
-PresentationContext143 = RTTreatmentPreparationStorage\UncompressedOrZlib
-PresentationContext144 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib
-PresentationContext145 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib
-PresentationContext146 = RawDataStorage\UncompressedOrZlib
-PresentationContext147 = RealWorldValueMappingStorage\UncompressedOrZlib
-PresentationContext148 = RespiratoryWaveformStorage\UncompressedOrZlib
-PresentationContext149 = RoboticArmRadiationStorage\UncompressedOrZlib
-PresentationContext150 = RoboticRadiationRecordStorage\UncompressedOrZlib
-PresentationContext151 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib
-PresentationContext152 = SegmentationStorage\UncompressedOrZlib
-PresentationContext153 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext154 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib
-PresentationContext155 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib
-PresentationContext156 = SpatialFiducialsStorage\UncompressedOrZlib
-PresentationContext157 = SpatialRegistrationStorage\UncompressedOrZlib
-PresentationContext158 = SpectaclePrescriptionReportStorage\UncompressedOrZlib
-PresentationContext159 = StereometricRelationshipStorage\UncompressedOrZlib
-PresentationContext160 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib
-PresentationContext161 = SurfaceScanMeshStorage\UncompressedOrZlib
-PresentationContext162 = SurfaceScanPointCloudStorage\UncompressedOrZlib
-PresentationContext163 = SurfaceSegmentationStorage\UncompressedOrZlib
-PresentationContext164 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib
-PresentationContext165 = TomotherapeuticRadiationStorage\UncompressedOrZlib
-PresentationContext166 = TractographyResultsStorage\UncompressedOrZlib
-PresentationContext167 = TwelveLeadECGWaveformStorage\UncompressedOrZlib
-PresentationContext168 = VisualAcuityMeasurementsStorage\UncompressedOrZlib
-PresentationContext169 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
-PresentationContext170 = XADefinedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext171 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib
-PresentationContext172 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
-PresentationContext173 = XRayRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext68  = AcquisitionContextSRStorage\UncompressedOrZlib
+PresentationContext69  = AdvancedBlendingPresentationStateStorage\UncompressedOrZlib
+PresentationContext70  = AmbulatoryECGWaveformStorage\UncompressedOrZlib
+PresentationContext71  = ArterialPulseWaveformStorage\UncompressedOrZlib
+PresentationContext72  = AutorefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext73  = BasicStructuredDisplayStorage\UncompressedOrZlib
+PresentationContext74  = BasicTextSRStorage\UncompressedOrZlib
+PresentationContext75  = BasicVoiceAudioWaveformStorage\UncompressedOrZlib
+PresentationContext76  = BlendingSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext77  = BodyPositionWaveformStorage\UncompressedOrZlib
+PresentationContext78  = CArmPhotonElectronRadiationRecordStorage\UncompressedOrZlib
+PresentationContext79  = CArmPhotonElectronRadiationStorage\UncompressedOrZlib
+PresentationContext80  = CTDefinedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext81  = CTPerformedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext82  = CardiacElectrophysiologyWaveformStorage\UncompressedOrZlib
+PresentationContext83  = ChestCADSRStorage\UncompressedOrZlib
+PresentationContext84  = ColonCADSRStorage\UncompressedOrZlib
+PresentationContext85  = ColorPaletteStorage\UncompressedOrZlib
+PresentationContext86  = ColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext87  = CompositingPlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext88  = Comprehensive3DSRStorage\UncompressedOrZlib
+PresentationContext89  = ComprehensiveSRStorage\UncompressedOrZlib
+PresentationContext90  = ContentAssessmentResultsStorage\UncompressedOrZlib
+PresentationContext91  = DeformableSpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext92  = ElectromyogramWaveformStorage\UncompressedOrZlib
+PresentationContext93  = ElectrooculogramWaveformStorage\UncompressedOrZlib
+PresentationContext94  = EncapsulatedCDAStorage\UncompressedOrZlib
+PresentationContext95  = EncapsulatedMTLStorage\UncompressedOrZlib
+PresentationContext96  = EncapsulatedOBJStorage\UncompressedOrZlib
+PresentationContext97  = EncapsulatedPDFStorage\UncompressedOrZlib
+PresentationContext98  = EncapsulatedSTLStorage\UncompressedOrZlib
+PresentationContext99  = EnhancedSRStorage\UncompressedOrZlib
+PresentationContext100 = EnhancedXRayRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext101 = ExtensibleSRStorage\UncompressedOrZlib
+PresentationContext102 = General32BitECGWaveformStorage\UncompressedOrZlib
+PresentationContext103 = GeneralAudioWaveformStorage\UncompressedOrZlib
+PresentationContext104 = GeneralECGWaveformStorage\UncompressedOrZlib
+PresentationContext105 = GenericImplantTemplateStorage\UncompressedOrZlib
+PresentationContext106 = GrayscalePlanarMPRVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext107 = GrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext108 = HangingProtocolStorage\UncompressedOrZlib
+PresentationContext109 = HemodynamicWaveformStorage\UncompressedOrZlib
+PresentationContext110 = ImplantAssemblyTemplateStorage\UncompressedOrZlib
+PresentationContext111 = ImplantTemplateGroupStorage\UncompressedOrZlib
+PresentationContext112 = ImplantationPlanSRStorage\UncompressedOrZlib
+PresentationContext113 = IntraocularLensCalculationsStorage\UncompressedOrZlib
+PresentationContext114 = InventoryStorage\UncompressedOrZlib
+PresentationContext115 = KeratometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext116 = KeyObjectSelectionDocumentStorage\UncompressedOrZlib
+PresentationContext117 = LensometryMeasurementsStorage\UncompressedOrZlib
+PresentationContext118 = MRSpectroscopyStorage\UncompressedOrZlib
+PresentationContext119 = MacularGridThicknessAndVolumeReportStorage\UncompressedOrZlib
+PresentationContext120 = MammographyCADSRStorage\UncompressedOrZlib
+PresentationContext121 = MicroscopyBulkSimpleAnnotationsStorage\UncompressedOrZlib
+PresentationContext122 = MultichannelRespiratoryWaveformStorage\UncompressedOrZlib
+PresentationContext123 = MultipleVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext124 = OphthalmicAxialMeasurementsStorage\UncompressedOrZlib
+PresentationContext125 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\UncompressedOrZlib
+PresentationContext126 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\UncompressedOrZlib
+PresentationContext127 = ParametricMapStorage\UncompressedOrZlib
+PresentationContext128 = PatientRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext129 = PerformedImagingAgentAdministrationSRStorage\UncompressedOrZlib
+PresentationContext130 = PlannedImagingAgentAdministrationSRStorage\UncompressedOrZlib
+PresentationContext131 = ProcedureLogStorage\UncompressedOrZlib
+PresentationContext132 = ProtocolApprovalStorage\UncompressedOrZlib
+PresentationContext133 = PseudoColorSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext134 = RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext135 = RTBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext136 = RTBrachyApplicationSetupDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext137 = RTBrachyTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext138 = RTDoseStorage\UncompressedOrZlib
+PresentationContext139 = RTIonBeamsTreatmentRecordStorage\UncompressedOrZlib
+PresentationContext140 = RTIonPlanStorage\UncompressedOrZlib
+PresentationContext141 = RTPatientPositionAcquisitionInstructionStorage\UncompressedOrZlib
+PresentationContext142 = RTPhysicianIntentStorage\UncompressedOrZlib
+PresentationContext143 = RTPlanStorage\UncompressedOrZlib
+PresentationContext144 = RTRadiationRecordSetStorage\UncompressedOrZlib
+PresentationContext145 = RTRadiationSalvageRecordStorage\UncompressedOrZlib
+PresentationContext146 = RTRadiationSetDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext147 = RTRadiationSetStorage\UncompressedOrZlib
+PresentationContext148 = RTSegmentAnnotationStorage\UncompressedOrZlib
+PresentationContext149 = RTStructureSetStorage\UncompressedOrZlib
+PresentationContext150 = RTTreatmentPreparationStorage\UncompressedOrZlib
+PresentationContext151 = RTTreatmentSummaryRecordStorage\UncompressedOrZlib
+PresentationContext152 = RadiopharmaceuticalRadiationDoseSRStorage\UncompressedOrZlib
+PresentationContext153 = RawDataStorage\UncompressedOrZlib
+PresentationContext154 = RealWorldValueMappingStorage\UncompressedOrZlib
+PresentationContext155 = RespiratoryWaveformStorage\UncompressedOrZlib
+PresentationContext156 = RoboticArmRadiationStorage\UncompressedOrZlib
+PresentationContext157 = RoboticRadiationRecordStorage\UncompressedOrZlib
+PresentationContext158 = RoutineScalpElectroencephalogramWaveformStorage\UncompressedOrZlib
+PresentationContext159 = SegmentationStorage\UncompressedOrZlib
+PresentationContext160 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext161 = SimplifiedAdultEchoSRStorage\UncompressedOrZlib
+PresentationContext162 = SleepElectroencephalogramWaveformStorage\UncompressedOrZlib
+PresentationContext163 = SpatialFiducialsStorage\UncompressedOrZlib
+PresentationContext164 = SpatialRegistrationStorage\UncompressedOrZlib
+PresentationContext165 = SpectaclePrescriptionReportStorage\UncompressedOrZlib
+PresentationContext166 = StereometricRelationshipStorage\UncompressedOrZlib
+PresentationContext167 = SubjectiveRefractionMeasurementsStorage\UncompressedOrZlib
+PresentationContext168 = SurfaceScanMeshStorage\UncompressedOrZlib
+PresentationContext169 = SurfaceScanPointCloudStorage\UncompressedOrZlib
+PresentationContext170 = SurfaceSegmentationStorage\UncompressedOrZlib
+PresentationContext171 = TomotherapeuticRadiationRecordStorage\UncompressedOrZlib
+PresentationContext172 = TomotherapeuticRadiationStorage\UncompressedOrZlib
+PresentationContext173 = TractographyResultsStorage\UncompressedOrZlib
+PresentationContext174 = TwelveLeadECGWaveformStorage\UncompressedOrZlib
+PresentationContext175 = VariableModalityLUTSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext176 = VisualAcuityMeasurementsStorage\UncompressedOrZlib
+PresentationContext177 = VolumeRenderingVolumetricPresentationStateStorage\UncompressedOrZlib
+PresentationContext178 = XADefinedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext179 = XAPerformedProcedureProtocolStorage\UncompressedOrZlib
+PresentationContext180 = XAXRFGrayscaleSoftcopyPresentationStateStorage\UncompressedOrZlib
+PresentationContext181 = XRayRadiationDoseSRStorage\UncompressedOrZlib
 #
 # retired non-image SOP classes
 #
-PresentationContext174 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib
-PresentationContext175 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib
-PresentationContext176 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib
-PresentationContext177 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib
-PresentationContext178 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib
-PresentationContext179 = RETIRED_StoredPrintStorage\UncompressedOrZlib
+PresentationContext182 = RETIRED_StandaloneCurveStorage\UncompressedOrZlib
+PresentationContext183 = RETIRED_StandaloneModalityLUTStorage\UncompressedOrZlib
+PresentationContext184 = RETIRED_StandaloneOverlayStorage\UncompressedOrZlib
+PresentationContext185 = RETIRED_StandalonePETCurveStorage\UncompressedOrZlib
+PresentationContext186 = RETIRED_StandaloneVOILUTStorage\UncompressedOrZlib
+PresentationContext187 = RETIRED_StoredPrintStorage\UncompressedOrZlib
 #
 # draft non-image SOP classes
 #
-PresentationContext180 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
-PresentationContext181 = DRAFT_SRAudioStorage\UncompressedOrZlib
-PresentationContext182 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib
-PresentationContext183 = DRAFT_SRDetailStorage\UncompressedOrZlib
-PresentationContext184 = DRAFT_SRTextStorage\UncompressedOrZlib
-PresentationContext185 = DRAFT_WaveformStorage\UncompressedOrZlib
+PresentationContext188 = DRAFT_RTBeamsDeliveryInstructionStorage\UncompressedOrZlib
+PresentationContext189 = DRAFT_SRAudioStorage\UncompressedOrZlib
+PresentationContext190 = DRAFT_SRComprehensiveStorage\UncompressedOrZlib
+PresentationContext191 = DRAFT_SRDetailStorage\UncompressedOrZlib
+PresentationContext192 = DRAFT_SRTextStorage\UncompressedOrZlib
+PresentationContext193 = DRAFT_WaveformStorage\UncompressedOrZlib
 #
 # DICOS Storage
 #
-PresentationContext186 = DICOS_CTImageStorage\AnyTransferSyntax
-PresentationContext187 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax
-PresentationContext188 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax
-PresentationContext189 = DICOS_2DAITStorage\AnyTransferSyntax
-PresentationContext190 = DICOS_3DAITStorage\AnyTransferSyntax
-PresentationContext191 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib
-PresentationContext192 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib
+PresentationContext194 = DICOS_CTImageStorage\AnyTransferSyntax
+PresentationContext195 = DICOS_DigitalXRayImageStorageForPresentation\AnyTransferSyntax
+PresentationContext196 = DICOS_DigitalXRayImageStorageForProcessing\AnyTransferSyntax
+PresentationContext197 = DICOS_2DAITStorage\AnyTransferSyntax
+PresentationContext198 = DICOS_3DAITStorage\AnyTransferSyntax
+PresentationContext199 = DICOS_QuadrupoleResonanceStorage\UncompressedOrZlib
+PresentationContext200 = DICOS_ThreatDetectionReportStorage\UncompressedOrZlib
 #
 # DICONDE Storage
 #
-PresentationContext193 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax
-PresentationContext194 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax
+PresentationContext201 = DICONDE_EddyCurrentImageStorage\AnyTransferSyntax
+PresentationContext202 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSyntax
 
 # ----------------------------------------------------------------------------
 
@@ -331,6 +363,9 @@ PresentationContext194 = DICONDE_EddyCurrentMultiframeImageStorage\AnyTransferSy
 # For Ultrasound, we additionally support RLE.
 # The retired and standalone SOP classes are not supported with this profile.
 #
+# Please do not add any Storage SOP Class that does not fit into the
+# PATIENT-STUDY-SERIES-INSTANCE information model.
+#
 PresentationContext1   = ComputedRadiographyImageStorage\JPEGBaseline
 PresentationContext2   = ComputedRadiographyImageStorage\JPEGLossless
 PresentationContext3   = ComputedRadiographyImageStorage\Uncompressed
@@ -484,7 +519,6 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - Comprehensive3DSRStorage
 # - ContentAssessmentResultsStorage
 # - CornealTopographyMapStorage
-# - CTDefinedProcedureProtocolStorage
 # - CTPerformedProcedureProtocolStorage
 # - DeformableSpatialRegistrationStorage
 # - DermoscopicPhotographyImageStorage
@@ -494,20 +528,21 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - EncapsulatedMTLStorage
 # - EncapsulatedOBJStorage
 # - EncapsulatedSTLStorage
+# - EnhancedContinuousRTImageStorage
 # - EnhancedMRColorImageStorage
 # - EnhancedPETImageStorage
+# - EnhancedRTImageStorage
 # - EnhancedUSVolumeStorage
 # - EnhancedXRayRadiationDoseSRStorage
 # - ExtensibleSRStorage
+# - General32BitECGWaveformStorage
 # - GeneralAudioWaveformStorage
-# - GenericImplantTemplateStorage
 # - GrayscalePlanarMPRVolumetricPresentationStateStorage
-# - ImplantAssemblyTemplateStorage
 # - ImplantationPlanSRStorage
-# - ImplantTemplateGroupStorage
 # - IntraocularLensCalculationsStorage
 # - IntravascularOpticalCoherenceTomographyImageStorageForPresentation
 # - IntravascularOpticalCoherenceTomographyImageStorageForProcessing
+# - InventoryStorage
 # - KeratometryMeasurementsStorage
 # - LegacyConvertedEnhancedCTImageStorage
 # - LegacyConvertedEnhancedMRImageStorage
@@ -526,8 +561,8 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - ParametricMapStorage
 # - PatientRadiationDoseSRStorage
 # - PerformedImagingAgentAdministrationSRStorage
+# - PhotoacousticImageStorage
 # - PlannedImagingAgentAdministrationSRStorage
-# - ProtocolApprovalStorage
 # - RadiopharmaceuticalRadiationDoseSRStorage
 # - RealWorldValueMappingStorage
 # - RespiratoryWaveformStorage
@@ -538,6 +573,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - RTBrachyApplicationSetupDeliveryInstructionStorage
 # - RTIonBeamsTreatmentRecordStorage
 # - RTIonPlanStorage
+# - RTPatientPositionAcquisitionInstructionStorage
 # - RTPhysicianIntentStorage
 # - RTRadiationRecordSetStorage
 # - RTRadiationSalvageRecordStorage
@@ -557,12 +593,12 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - TomotherapeuticRadiationRecordStorage
 # - TomotherapeuticRadiationStorage
 # - TractographyResultsStorage
+# - VariableModalityLUTSoftcopyPresentationStateStorage
 # - VisualAcuityMeasurementsStorage
 # - VLWholeSlideMicroscopyImageStorage
 # - VolumeRenderingVolumetricPresentationStateStorage
 # - WideFieldOphthalmicPhotographyStereographicProjectionImageStorage
 # - WideFieldOphthalmicPhotography3DCoordinatesImageStorage
-# - XADefinedProcedureProtocolStorage
 # - XAPerformedProcedureProtocolStorage
 # - XAXRFGrayscaleSoftcopyPresentationStateStorage
 # - XRay3DAngiographicImageStorage
@@ -611,186 +647,194 @@ Role10  = DigitalMammographyXRayImageStorageForPresentation\BOTH
 Role11  = DigitalMammographyXRayImageStorageForProcessing\BOTH
 Role12  = DigitalXRayImageStorageForPresentation\BOTH
 Role13  = DigitalXRayImageStorageForProcessing\BOTH
-Role14  = EnhancedCTImageStorage\BOTH
-Role15  = EnhancedMRColorImageStorage\BOTH
-Role16  = EnhancedMRImageStorage\BOTH
-Role17  = EnhancedPETImageStorage\BOTH
-Role18  = EnhancedUSVolumeStorage\BOTH
-Role19  = EnhancedXAImageStorage\BOTH
-Role20  = EnhancedXRFImageStorage\BOTH
-Role21  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\BOTH
-Role22  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\BOTH
-Role23  = LegacyConvertedEnhancedCTImageStorage\BOTH
-Role24  = LegacyConvertedEnhancedMRImageStorage\BOTH
-Role25  = LegacyConvertedEnhancedPETImageStorage\BOTH
-Role26  = MRImageStorage\BOTH
-Role27  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\BOTH
-Role28  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\BOTH
-Role29  = MultiframeSingleBitSecondaryCaptureImageStorage\BOTH
-Role30  = MultiframeTrueColorSecondaryCaptureImageStorage\BOTH
-Role31  = NuclearMedicineImageStorage\BOTH
-Role32  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\BOTH
-Role33  = OphthalmicPhotography16BitImageStorage\BOTH
-Role34  = OphthalmicPhotography8BitImageStorage\BOTH
-Role35  = OphthalmicThicknessMapStorage\BOTH
-Role36  = OphthalmicTomographyImageStorage\BOTH
-Role37  = PositronEmissionTomographyImageStorage\BOTH
-Role38  = RTImageStorage\BOTH
-Role39  = SecondaryCaptureImageStorage\BOTH
-Role40  = UltrasoundImageStorage\BOTH
-Role41  = UltrasoundMultiframeImageStorage\BOTH
-Role42  = VLEndoscopicImageStorage\BOTH
-Role43  = VLMicroscopicImageStorage\BOTH
-Role44  = VLPhotographicImageStorage\BOTH
-Role45  = VLSlideCoordinatesMicroscopicImageStorage\BOTH
-Role46  = VLWholeSlideMicroscopyImageStorage\BOTH
-Role47  = VideoEndoscopicImageStorage\BOTH
-Role48  = VideoMicroscopicImageStorage\BOTH
-Role49  = VideoPhotographicImageStorage\BOTH
-Role50  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\BOTH
-Role51  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\BOTH
-Role52  = XRay3DAngiographicImageStorage\BOTH
-Role53  = XRay3DCraniofacialImageStorage\BOTH
-Role54  = XRayAngiographicImageStorage\BOTH
-Role55  = XRayRadiofluoroscopicImageStorage\BOTH
-Role56  = RETIRED_HardcopyColorImageStorage\BOTH
-Role57  = RETIRED_HardcopyGrayscaleImageStorage\BOTH
-Role58  = RETIRED_NuclearMedicineImageStorage\BOTH
-Role59  = RETIRED_UltrasoundImageStorage\BOTH
-Role60  = RETIRED_UltrasoundMultiframeImageStorage\BOTH
-Role61  = RETIRED_VLImageStorage\BOTH
-Role62  = RETIRED_VLMultiframeImageStorage\BOTH
-Role63  = RETIRED_XRayAngiographicBiPlaneImageStorage\BOTH
-Role64  = AcquisitionContextSRStorage\BOTH
-Role65  = AdvancedBlendingPresentationStateStorage\BOTH
-Role66  = AmbulatoryECGWaveformStorage\BOTH
-Role67  = ArterialPulseWaveformStorage\BOTH
-Role68  = AutorefractionMeasurementsStorage\BOTH
-Role69  = BasicStructuredDisplayStorage\BOTH
-Role70  = BasicTextSRStorage\BOTH
-Role71  = BasicVoiceAudioWaveformStorage\BOTH
-Role72  = BlendingSoftcopyPresentationStateStorage\BOTH
-Role73  = BodyPositionWaveformStorage\BOTH
-Role74  = CArmPhotonElectronRadiationRecordStorage\BOTH
-Role75  = CArmPhotonElectronRadiationStorage\BOTH
-Role76  = CTDefinedProcedureProtocolStorage\BOTH
-Role77  = CTPerformedProcedureProtocolStorage\BOTH
-Role78  = CardiacElectrophysiologyWaveformStorage\BOTH
-Role79  = ChestCADSRStorage\BOTH
-Role80  = ColonCADSRStorage\BOTH
-Role81  = ColorSoftcopyPresentationStateStorage\BOTH
-Role82  = CompositingPlanarMPRVolumetricPresentationStateStorage\BOTH
-Role83  = Comprehensive3DSRStorage\BOTH
-Role84  = ComprehensiveSRStorage\BOTH
-Role85  = ContentAssessmentResultsStorage\BOTH
-Role86  = DeformableSpatialRegistrationStorage\BOTH
-Role87  = ElectromyogramWaveformStorage\BOTH
-Role88  = ElectrooculogramWaveformStorage\BOTH
-Role89  = EncapsulatedCDAStorage\BOTH
-Role90  = EncapsulatedMTLStorage\BOTH
-Role91  = EncapsulatedOBJStorage\BOTH
-Role92  = EncapsulatedPDFStorage\BOTH
-Role93  = EncapsulatedSTLStorage\BOTH
-Role94  = EnhancedSRStorage\BOTH
-Role95  = EnhancedXRayRadiationDoseSRStorage\BOTH
-Role96  = ExtensibleSRStorage\BOTH
-Role97  = GeneralAudioWaveformStorage\BOTH
-Role98  = GeneralECGWaveformStorage\BOTH
-Role99  = GenericImplantTemplateStorage\BOTH
-Role100 = GrayscalePlanarMPRVolumetricPresentationStateStorage\BOTH
-Role101 = GrayscaleSoftcopyPresentationStateStorage\BOTH
-Role102 = HangingProtocolStorage\BOTH
-Role103 = HemodynamicWaveformStorage\BOTH
-Role104 = ImplantAssemblyTemplateStorage\BOTH
-Role105 = ImplantTemplateGroupStorage\BOTH
-Role106 = ImplantationPlanSRStorage\BOTH
-Role107 = IntraocularLensCalculationsStorage\BOTH
-Role108 = KeratometryMeasurementsStorage\BOTH
-Role109 = KeyObjectSelectionDocumentStorage\BOTH
-Role110 = LensometryMeasurementsStorage\BOTH
-Role111 = MRSpectroscopyStorage\BOTH
-Role112 = MacularGridThicknessAndVolumeReportStorage\BOTH
-Role113 = MammographyCADSRStorage\BOTH
-Role114 = MicroscopyBulkSimpleAnnotationsStorage\BOTH
-Role115 = MultichannelRespiratoryWaveformStorage\BOTH
-Role116 = MultipleVolumeRenderingVolumetricPresentationStateStorage\BOTH
-Role117 = OphthalmicAxialMeasurementsStorage\BOTH
-Role118 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\BOTH
-Role119 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\BOTH
-Role120 = ParametricMapStorage\BOTH
-Role121 = PatientRadiationDoseSRStorage\BOTH
-Role122 = PerformedImagingAgentAdministrationSRStorage\BOTH
-Role123 = PlannedImagingAgentAdministrationSRStorage\BOTH
-Role124 = ProcedureLogStorage\BOTH
-Role125 = ProtocolApprovalStorage\BOTH
-Role126 = PseudoColorSoftcopyPresentationStateStorage\BOTH
-Role127 = RTBeamsDeliveryInstructionStorage\BOTH
-Role128 = RTBeamsTreatmentRecordStorage\BOTH
-Role129 = RTBrachyApplicationSetupDeliveryInstructionStorage\BOTH
-Role130 = RTBrachyTreatmentRecordStorage\BOTH
-Role131 = RTDoseStorage\BOTH
-Role132 = RTIonBeamsTreatmentRecordStorage\BOTH
-Role133 = RTIonPlanStorage\BOTH
-Role134 = RTPhysicianIntentStorage\BOTH
-Role135 = RTPlanStorage\BOTH
-Role136 = RTRadiationRecordSetStorage\BOTH
-Role137 = RTRadiationSalvageRecordStorage\BOTH
-Role138 = RTRadiationSetDeliveryInstructionStorage\BOTH
-Role139 = RTRadiationSetStorage\BOTH
-Role140 = RTSegmentAnnotationStorage\BOTH
-Role141 = RTStructureSetStorage\BOTH
-Role142 = RTTreatmentPreparationStorage\BOTH
-Role143 = RTTreatmentSummaryRecordStorage\BOTH
-Role144 = RadiopharmaceuticalRadiationDoseSRStorage\BOTH
-Role145 = RawDataStorage\BOTH
-Role146 = RealWorldValueMappingStorage\BOTH
-Role147 = RespiratoryWaveformStorage\BOTH
-Role148 = RoboticArmRadiationStorage\BOTH
-Role149 = RoboticRadiationRecordStorage\BOTH
-Role150 = RoutineScalpElectroencephalogramWaveformStorage\BOTH
-Role151 = SegmentationStorage\BOTH
-Role152 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\BOTH
-Role153 = SimplifiedAdultEchoSRStorage\BOTH
-Role154 = SleepElectroencephalogramWaveformStorage\BOTH
-Role155 = SpatialFiducialsStorage\BOTH
-Role156 = SpatialRegistrationStorage\BOTH
-Role157 = SpectaclePrescriptionReportStorage\BOTH
-Role158 = StereometricRelationshipStorage\BOTH
-Role159 = SubjectiveRefractionMeasurementsStorage\BOTH
-Role160 = SurfaceScanMeshStorage\BOTH
-Role161 = SurfaceScanPointCloudStorage\BOTH
-Role162 = SurfaceSegmentationStorage\BOTH
-Role163 = TomotherapeuticRadiationRecordStorage\BOTH
-Role164 = TomotherapeuticRadiationStorage\BOTH
-Role165 = TractographyResultsStorage\BOTH
-Role166 = TwelveLeadECGWaveformStorage\BOTH
-Role167 = VisualAcuityMeasurementsStorage\BOTH
-Role168 = VolumeRenderingVolumetricPresentationStateStorage\BOTH
-Role169 = XADefinedProcedureProtocolStorage\BOTH
-Role170 = XAPerformedProcedureProtocolStorage\BOTH
-Role171 = XAXRFGrayscaleSoftcopyPresentationStateStorage\BOTH
-Role172 = XRayRadiationDoseSRStorage\BOTH
-Role173 = RETIRED_StandaloneCurveStorage\BOTH
-Role174 = RETIRED_StandaloneModalityLUTStorage\BOTH
-Role175 = RETIRED_StandaloneOverlayStorage\BOTH
-Role176 = RETIRED_StandalonePETCurveStorage\BOTH
-Role177 = RETIRED_StandaloneVOILUTStorage\BOTH
-Role178 = RETIRED_StoredPrintStorage\BOTH
-Role179 = DRAFT_RTBeamsDeliveryInstructionStorage\BOTH
-Role180 = DRAFT_SRAudioStorage\BOTH
-Role181 = DRAFT_SRComprehensiveStorage\BOTH
-Role182 = DRAFT_SRDetailStorage\BOTH
-Role183 = DRAFT_SRTextStorage\BOTH
-Role184 = DRAFT_WaveformStorage\BOTH
-Role185 = DICOS_CTImageStorage\BOTH
-Role186 = DICOS_DigitalXRayImageStorageForPresentation\BOTH
-Role187 = DICOS_DigitalXRayImageStorageForProcessing\BOTH
-Role188 = DICOS_2DAITStorage\BOTH
-Role189 = DICOS_3DAITStorage\BOTH
-Role190 = DICOS_QuadrupoleResonanceStorage\BOTH
-Role191 = DICOS_ThreatDetectionReportStorage\BOTH
-Role192 = DICONDE_EddyCurrentImageStorage\BOTH
-Role193 = DICONDE_EddyCurrentMultiframeImageStorage\BOTH
+Role14  = EnhancedContinuousRTImageStorage\BOTH
+Role15  = EnhancedCTImageStorage\BOTH
+Role16  = EnhancedMRColorImageStorage\BOTH
+Role17  = EnhancedMRImageStorage\BOTH
+Role18  = EnhancedPETImageStorage\BOTH
+Role19  = EnhancedRTImageStorage\BOTH
+Role20  = EnhancedUSVolumeStorage\BOTH
+Role21  = EnhancedXAImageStorage\BOTH
+Role22  = EnhancedXRFImageStorage\BOTH
+Role23  = IntravascularOpticalCoherenceTomographyImageStorageForPresentation\BOTH
+Role24  = IntravascularOpticalCoherenceTomographyImageStorageForProcessing\BOTH
+Role25  = LegacyConvertedEnhancedCTImageStorage\BOTH
+Role26  = LegacyConvertedEnhancedMRImageStorage\BOTH
+Role27  = LegacyConvertedEnhancedPETImageStorage\BOTH
+Role28  = MRImageStorage\BOTH
+Role29  = MultiframeGrayscaleByteSecondaryCaptureImageStorage\BOTH
+Role30  = MultiframeGrayscaleWordSecondaryCaptureImageStorage\BOTH
+Role31  = MultiframeSingleBitSecondaryCaptureImageStorage\BOTH
+Role32  = MultiframeTrueColorSecondaryCaptureImageStorage\BOTH
+Role33  = NuclearMedicineImageStorage\BOTH
+Role34  = OphthalmicOpticalCoherenceTomographyEnFaceImageStorage\BOTH
+Role35  = OphthalmicPhotography16BitImageStorage\BOTH
+Role36  = OphthalmicPhotography8BitImageStorage\BOTH
+Role37  = OphthalmicThicknessMapStorage\BOTH
+Role38  = OphthalmicTomographyImageStorage\BOTH
+Role39  = PhotoacousticImageStorage\BOTH
+Role40  = PositronEmissionTomographyImageStorage\BOTH
+Role41  = RTImageStorage\BOTH
+Role42  = SecondaryCaptureImageStorage\BOTH
+Role43  = UltrasoundImageStorage\BOTH
+Role44  = UltrasoundMultiframeImageStorage\BOTH
+Role45  = VLEndoscopicImageStorage\BOTH
+Role46  = VLMicroscopicImageStorage\BOTH
+Role47  = VLPhotographicImageStorage\BOTH
+Role48  = VLSlideCoordinatesMicroscopicImageStorage\BOTH
+Role49  = VLWholeSlideMicroscopyImageStorage\BOTH
+Role50  = VideoEndoscopicImageStorage\BOTH
+Role51  = VideoMicroscopicImageStorage\BOTH
+Role52  = VideoPhotographicImageStorage\BOTH
+Role53  = WideFieldOphthalmicPhotography3DCoordinatesImageStorage\BOTH
+Role54  = WideFieldOphthalmicPhotographyStereographicProjectionImageStorage\BOTH
+Role55  = XRay3DAngiographicImageStorage\BOTH
+Role56  = XRay3DCraniofacialImageStorage\BOTH
+Role57  = XRayAngiographicImageStorage\BOTH
+Role58  = XRayRadiofluoroscopicImageStorage\BOTH
+Role59  = RETIRED_HardcopyColorImageStorage\BOTH
+Role60  = RETIRED_HardcopyGrayscaleImageStorage\BOTH
+Role61  = RETIRED_NuclearMedicineImageStorage\BOTH
+Role62  = RETIRED_UltrasoundImageStorage\BOTH
+Role63  = RETIRED_UltrasoundMultiframeImageStorage\BOTH
+Role64  = RETIRED_VLImageStorage\BOTH
+Role65  = RETIRED_VLMultiframeImageStorage\BOTH
+Role66  = RETIRED_XRayAngiographicBiPlaneImageStorage\BOTH
+Role67  = AcquisitionContextSRStorage\BOTH
+Role68  = AdvancedBlendingPresentationStateStorage\BOTH
+Role69  = AmbulatoryECGWaveformStorage\BOTH
+Role70  = ArterialPulseWaveformStorage\BOTH
+Role71  = AutorefractionMeasurementsStorage\BOTH
+Role72  = BasicStructuredDisplayStorage\BOTH
+Role73  = BasicTextSRStorage\BOTH
+Role74  = BasicVoiceAudioWaveformStorage\BOTH
+Role75  = BlendingSoftcopyPresentationStateStorage\BOTH
+Role76  = BodyPositionWaveformStorage\BOTH
+Role77  = CArmPhotonElectronRadiationRecordStorage\BOTH
+Role78  = CArmPhotonElectronRadiationStorage\BOTH
+Role79  = CTDefinedProcedureProtocolStorage\BOTH
+Role80  = CTPerformedProcedureProtocolStorage\BOTH
+Role81  = CardiacElectrophysiologyWaveformStorage\BOTH
+Role82  = ChestCADSRStorage\BOTH
+Role83  = ColonCADSRStorage\BOTH
+Role84  = ColorPaletteStorage\BOTH
+Role85  = ColorSoftcopyPresentationStateStorage\BOTH
+Role86  = CompositingPlanarMPRVolumetricPresentationStateStorage\BOTH
+Role87  = Comprehensive3DSRStorage\BOTH
+Role88  = ComprehensiveSRStorage\BOTH
+Role89  = ContentAssessmentResultsStorage\BOTH
+Role90  = DeformableSpatialRegistrationStorage\BOTH
+Role91  = ElectromyogramWaveformStorage\BOTH
+Role92  = ElectrooculogramWaveformStorage\BOTH
+Role93  = EncapsulatedCDAStorage\BOTH
+Role94  = EncapsulatedMTLStorage\BOTH
+Role95  = EncapsulatedOBJStorage\BOTH
+Role96  = EncapsulatedPDFStorage\BOTH
+Role97  = EncapsulatedSTLStorage\BOTH
+Role98  = EnhancedSRStorage\BOTH
+Role99  = EnhancedXRayRadiationDoseSRStorage\BOTH
+Role100 = ExtensibleSRStorage\BOTH
+Role101 = General32BitECGWaveformStorage\BOTH
+Role102 = GeneralAudioWaveformStorage\BOTH
+Role103 = GeneralECGWaveformStorage\BOTH
+Role104 = GenericImplantTemplateStorage\BOTH
+Role105 = GrayscalePlanarMPRVolumetricPresentationStateStorage\BOTH
+Role106 = GrayscaleSoftcopyPresentationStateStorage\BOTH
+Role107 = HangingProtocolStorage\BOTH
+Role108 = HemodynamicWaveformStorage\BOTH
+Role109 = ImplantAssemblyTemplateStorage\BOTH
+Role110 = ImplantTemplateGroupStorage\BOTH
+Role111 = ImplantationPlanSRStorage\BOTH
+Role112 = IntraocularLensCalculationsStorage\BOTH
+Role113 = InventoryStorage\BOTH
+Role114 = KeratometryMeasurementsStorage\BOTH
+Role115 = KeyObjectSelectionDocumentStorage\BOTH
+Role116 = LensometryMeasurementsStorage\BOTH
+Role117 = MRSpectroscopyStorage\BOTH
+Role118 = MacularGridThicknessAndVolumeReportStorage\BOTH
+Role119 = MammographyCADSRStorage\BOTH
+Role120 = MicroscopyBulkSimpleAnnotationsStorage\BOTH
+Role121 = MultichannelRespiratoryWaveformStorage\BOTH
+Role122 = MultipleVolumeRenderingVolumetricPresentationStateStorage\BOTH
+Role123 = OphthalmicAxialMeasurementsStorage\BOTH
+Role124 = OphthalmicOpticalCoherenceTomographyBscanVolumeAnalysisStorage\BOTH
+Role125 = OphthalmicVisualFieldStaticPerimetryMeasurementsStorage\BOTH
+Role126 = ParametricMapStorage\BOTH
+Role127 = PatientRadiationDoseSRStorage\BOTH
+Role128 = PerformedImagingAgentAdministrationSRStorage\BOTH
+Role129 = PlannedImagingAgentAdministrationSRStorage\BOTH
+Role130 = ProcedureLogStorage\BOTH
+Role131 = ProtocolApprovalStorage\BOTH
+Role132 = PseudoColorSoftcopyPresentationStateStorage\BOTH
+Role133 = RTBeamsDeliveryInstructionStorage\BOTH
+Role134 = RTBeamsTreatmentRecordStorage\BOTH
+Role135 = RTBrachyApplicationSetupDeliveryInstructionStorage\BOTH
+Role136 = RTBrachyTreatmentRecordStorage\BOTH
+Role137 = RTDoseStorage\BOTH
+Role138 = RTIonBeamsTreatmentRecordStorage\BOTH
+Role139 = RTIonPlanStorage\BOTH
+Role140 = RTPatientPositionAcquisitionInstructionStorage\BOTH
+Role141 = RTPhysicianIntentStorage\BOTH
+Role142 = RTPlanStorage\BOTH
+Role143 = RTRadiationRecordSetStorage\BOTH
+Role144 = RTRadiationSalvageRecordStorage\BOTH
+Role145 = RTRadiationSetDeliveryInstructionStorage\BOTH
+Role146 = RTRadiationSetStorage\BOTH
+Role147 = RTSegmentAnnotationStorage\BOTH
+Role148 = RTStructureSetStorage\BOTH
+Role149 = RTTreatmentPreparationStorage\BOTH
+Role150 = RTTreatmentSummaryRecordStorage\BOTH
+Role151 = RadiopharmaceuticalRadiationDoseSRStorage\BOTH
+Role152 = RawDataStorage\BOTH
+Role153 = RealWorldValueMappingStorage\BOTH
+Role154 = RespiratoryWaveformStorage\BOTH
+Role155 = RoboticArmRadiationStorage\BOTH
+Role156 = RoboticRadiationRecordStorage\BOTH
+Role157 = RoutineScalpElectroencephalogramWaveformStorage\BOTH
+Role158 = SegmentationStorage\BOTH
+Role159 = SegmentedVolumeRenderingVolumetricPresentationStateStorage\BOTH
+Role160 = SimplifiedAdultEchoSRStorage\BOTH
+Role161 = SleepElectroencephalogramWaveformStorage\BOTH
+Role162 = SpatialFiducialsStorage\BOTH
+Role163 = SpatialRegistrationStorage\BOTH
+Role164 = SpectaclePrescriptionReportStorage\BOTH
+Role165 = StereometricRelationshipStorage\BOTH
+Role166 = SubjectiveRefractionMeasurementsStorage\BOTH
+Role167 = SurfaceScanMeshStorage\BOTH
+Role168 = SurfaceScanPointCloudStorage\BOTH
+Role169 = SurfaceSegmentationStorage\BOTH
+Role170 = TomotherapeuticRadiationRecordStorage\BOTH
+Role171 = TomotherapeuticRadiationStorage\BOTH
+Role172 = TractographyResultsStorage\BOTH
+Role173 = TwelveLeadECGWaveformStorage\BOTH
+Role174 = VariableModalityLUTSoftcopyPresentationStateStorage\BOTH
+Role175 = VisualAcuityMeasurementsStorage\BOTH
+Role176 = VolumeRenderingVolumetricPresentationStateStorage\BOTH
+Role177 = XADefinedProcedureProtocolStorage\BOTH
+Role178 = XAPerformedProcedureProtocolStorage\BOTH
+Role179 = XAXRFGrayscaleSoftcopyPresentationStateStorage\BOTH
+Role180 = XRayRadiationDoseSRStorage\BOTH
+Role181 = RETIRED_StandaloneCurveStorage\BOTH
+Role182 = RETIRED_StandaloneModalityLUTStorage\BOTH
+Role183 = RETIRED_StandaloneOverlayStorage\BOTH
+Role184 = RETIRED_StandalonePETCurveStorage\BOTH
+Role185 = RETIRED_StandaloneVOILUTStorage\BOTH
+Role186 = RETIRED_StoredPrintStorage\BOTH
+Role187 = DRAFT_RTBeamsDeliveryInstructionStorage\BOTH
+Role188 = DRAFT_SRAudioStorage\BOTH
+Role189 = DRAFT_SRComprehensiveStorage\BOTH
+Role190 = DRAFT_SRDetailStorage\BOTH
+Role191 = DRAFT_SRTextStorage\BOTH
+Role192 = DRAFT_WaveformStorage\BOTH
+Role193 = DICOS_CTImageStorage\BOTH
+Role194 = DICOS_DigitalXRayImageStorageForPresentation\BOTH
+Role195 = DICOS_DigitalXRayImageStorageForProcessing\BOTH
+Role196 = DICOS_2DAITStorage\BOTH
+Role197 = DICOS_3DAITStorage\BOTH
+Role198 = DICOS_QuadrupoleResonanceStorage\BOTH
+Role199 = DICOS_ThreatDetectionReportStorage\BOTH
+Role200 = DICONDE_EddyCurrentImageStorage\BOTH
+Role201 = DICONDE_EddyCurrentMultiframeImageStorage\BOTH
 
 # ============================================================================
 [[Profiles]]
index 3c4a90998a189524e2d1a27fa0a2eea1707e476a..24bdef936719e8c333506e0b3a2359d3c29c2bd4 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2017, OFFIS e.V.
+ *  Copyright (C) 1993-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -107,10 +107,10 @@ private:
    */
   OFCondition negotiateAssociation(T_ASC_Association * assoc);
 
-  OFCondition refuseAssociation(T_ASC_Association ** assoc, CTN_RefuseReason reason);
+  OFCondition refuseAssociation(T_ASC_Association ** pAssoc, CTN_RefuseReason reason);
 
   OFCondition handleAssociation(
-    T_ASC_Association * assoc,
+    T_ASC_Association ** assoc,
     OFBool correctUIDPadding);
 
   OFCondition echoSCP(
index 991a42c5125e3009e66bf2246b1208e2478fb946..ea56c56f52c3d2dcba58d4039d4279d9ab1eb770 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2022, OFFIS e.V.
+ *  Copyright (C) 1993-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -3257,7 +3257,12 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::makeNewStoreFileName(
     if (m==NULL) m = "XX";
     sprintf(prefix, "%s_", m);
     // unsigned int seed = fnamecreator.hashString(SOPInstanceUID);
-    unsigned int seed = (unsigned int)time(NULL);
+
+    // Make seed static so that multiple/concurrent calls to this method
+    // will not use a seed that is initialized by the same time. Instead,
+    // rely on a seed that is updated by each call to makeFilename below, thus
+    // resulting in more "randomness" when called within the same second.
+    static unsigned int seed = (unsigned int)time(NULL);
     newImageFileName[0]=0; // return empty string in case of error
     if (! fnamecreator.makeFilename(seed, handle_->storageArea, prefix, ".dcm", filename))
         return QR_EC_IndexDatabaseError;
index f5f9df6617a1ab0bacbac95d1d4b33d319533ce2..b95439c0420f15a256f293a532839a7c14c38b2b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1993-2022, OFFIS e.V.
+ *  Copyright (C) 1993-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -205,13 +205,19 @@ OFCondition DcmQueryRetrieveSCP::dispatch(T_ASC_Association *assoc, OFBool corre
 }
 
 
-OFCondition DcmQueryRetrieveSCP::handleAssociation(T_ASC_Association * assoc, OFBool correctUIDPadding)
+OFCondition DcmQueryRetrieveSCP::handleAssociation(T_ASC_Association ** pAssoc, OFBool correctUIDPadding)
 {
     OFCondition         cond = EC_Normal;
     DIC_NODENAME        peerHostName;
     DIC_AE              peerAETitle;
     DIC_AE              myAETitle;
     OFString            temp_str;
+    T_ASC_Association * assoc;
+
+    if (pAssoc == NULL) {
+        return EC_IllegalParameter;
+    }
+    assoc = *pAssoc;
 
     ASC_getPresentationAddresses(assoc->params, peerHostName, sizeof(peerHostName), NULL, 0);
     ASC_getAPTitles(assoc->params, peerAETitle, sizeof(peerAETitle), myAETitle, sizeof(myAETitle), NULL, 0);
@@ -236,7 +242,7 @@ OFCondition DcmQueryRetrieveSCP::handleAssociation(T_ASC_Association * assoc, OF
     if (cond.bad()) {
         DCMQRDB_ERROR("Cannot Drop Association: " << DimseCondition::dump(temp_str, cond));
     }
-    cond = ASC_destroyAssociation(&assoc);
+    cond = ASC_destroyAssociation(pAssoc);
     if (cond.bad()) {
         DCMQRDB_ERROR("Cannot Destroy Association: " << DimseCondition::dump(temp_str, cond));
     }
@@ -1096,7 +1102,7 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet)
         if (options_.singleProcess_)
         {
             /* don't spawn a sub-process to handle the association */
-            cond = handleAssociation(assoc, options_.correctUIDPadding_);
+            cond = handleAssociation(&assoc, options_.correctUIDPadding_);
         }
 #ifdef HAVE_FORK
         else
@@ -1118,7 +1124,7 @@ OFCondition DcmQueryRetrieveSCP::waitForAssociation(T_ASC_Network * theNet)
             else
             {
                 /* child process, handle the association */
-                cond = handleAssociation(assoc, options_.correctUIDPadding_);
+                cond = handleAssociation(&assoc, options_.correctUIDPadding_);
                 /* the child process is done so exit */
                 exit(0);
             }
index 1c20d65f635f90a5bdabbc71f9a856547d528b9f..d8d645cdbb8c8ee72f3d4d63808125916abc6e69 100644 (file)
@@ -16,6 +16,10 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
@@ -34,7 +38,6 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -57,10 +60,7 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -123,16 +123,20 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdvhs.h \
  ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
@@ -150,8 +154,9 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -163,19 +168,22 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtplos.h \
+ ../include/dcmtk/dcmrt/seq/drtpros.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
  ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -183,15 +191,15 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps1.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas1.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs1.h \
  ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
@@ -201,48 +209,61 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspgis.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drtimage.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drtimage.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
- ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drtes.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \
+ ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds2.h \
+ ../include/dcmtk/dcmrt/seq/drtbl2.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtgas4.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtrims.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps4.h \
  ../include/dcmtk/dcmrt/seq/drtsis.h ../include/dcmtk/dcmrt/seq/drtsins.h \
  ../include/dcmtk/dcmrt/seq/drtvls.h ../include/dcmtk/dcmrt/drtplan.h \
  ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
  ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcshs.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
+ ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../include/dcmtk/dcmrt/seq/drtas1.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \
  ../include/dcmtk/dcmrt/seq/drtcps.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drtgas2.h \
  ../include/dcmtk/dcmrt/seq/drtpvis.h \
  ../include/dcmtk/dcmrt/seq/drtrbos1.h \
  ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
  ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drtfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs3.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
  ../include/dcmtk/dcmrt/seq/drtpss.h ../include/dcmtk/dcmrt/seq/drtfds.h \
  ../include/dcmtk/dcmrt/seq/drtmss.h ../include/dcmtk/dcmrt/seq/drtrsis.h \
  ../include/dcmtk/dcmrt/seq/drtsds.h ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
- ../include/dcmtk/dcmrt/seq/drtss.h ../include/dcmtk/dcmrt/seq/drttts.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps2.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drttts.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h ../include/dcmtk/dcmrt/drtstrct.h \
+ ../include/dcmtk/dcmrt/seq/drttms1.h ../include/dcmtk/dcmrt/drtstrct.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtsppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
@@ -250,48 +271,71 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtsptcs.h \
  ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
- ../include/dcmtk/dcmrt/seq/drtspccs.h ../include/dcmtk/dcmrt/drttreat.h \
+ ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrfors.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdais.h ../include/dcmtk/dcmrt/drttreat.h \
  ../include/dcmtk/dcmrt/seq/drtfgss.h \
  ../include/dcmtk/dcmrt/seq/drtfsss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
  ../include/dcmtk/dcmrt/seq/drttscds.h \
  ../include/dcmtk/dcmrt/seq/drttsmds.h ../include/dcmtk/dcmrt/drtionpl.h \
- ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \
+ ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas3.h \
  ../include/dcmtk/dcmrt/seq/drtddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas5.h \
  ../include/dcmtk/dcmrt/seq/drtiblds.h \
  ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../include/dcmtk/dcmrt/seq/drticps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds1.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss1.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs2.h \
  ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
  ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
  ../include/dcmtk/dcmrt/seq/drtrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrbos6.h \
- ../include/dcmtk/dcmrt/seq/drtrris6.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos2.h \
+ ../include/dcmtk/dcmrt/seq/drtrris2.h \
  ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \
  ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/seq/drtcdrs.h \
  ../include/dcmtk/dcmrt/seq/drtmdrs.h \
- ../include/dcmtk/dcmrt/seq/drttms0.h \
+ ../include/dcmtk/dcmrt/seq/drttms2.h \
  ../include/dcmtk/dcmrt/seq/drttsibs.h \
- ../include/dcmtk/dcmrt/seq/drtas7.h \
+ ../include/dcmtk/dcmrt/seq/drtas4.h \
  ../include/dcmtk/dcmrt/seq/drtbldls.h \
  ../include/dcmtk/dcmrt/seq/drtdddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas6.h \
  ../include/dcmtk/dcmrt/seq/drticpds.h \
  ../include/dcmtk/dcmrt/seq/drtcpas.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss2.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs2.h \
+ ../include/dcmtk/dcmrt/seq/drtmttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtttrcs.h \
  ../include/dcmtk/dcmrt/seq/drtrbls.h \
+ ../include/dcmtk/dcmrt/seq/drtrbss.h \
  ../include/dcmtk/dcmrt/seq/drtrcos.h \
  ../include/dcmtk/dcmrt/seq/drtrlsds.h \
  ../include/dcmtk/dcmrt/seq/drtrrms.h \
  ../include/dcmtk/dcmrt/seq/drtrrshs.h \
  ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \
- ../include/dcmtk/dcmrt/seq/drtrbos7.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos3.h \
  ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
  ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
  ../include/dcmtk/dcmrt/seq/drtrvis.h
index 52b024b8f951fe9ccdc53104048eec966f9e3d5c..c41df1073c8f436a9ae7c7c3cdda5d7166e2b207 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
- *  Copyright (c) 2010-2021, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (c) 2010-2022, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Test read and write methods of DICOM RT classes
  *
  *  Generated manually
  *  File created on 2010-05-10
- *  Last modified on 2012-10-09 by Riesmeier
+ *  Last modified on 2023-01-27 by Riesmeier
  *
  */
 
@@ -409,11 +409,11 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("drtfile-in", "DICOM RT input filename to be dumped", OFCmdParam::PM_MultiMandatory);
+    cmd.addParam("drtfile-in", "DICOM RT input filename to be dumped\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
-      cmd.addOption("--help",                   "-h",  "print this help text and exit", OFCommandLine::AF_Exclusive);
-      cmd.addOption("--version",                       "print version information and exit", OFCommandLine::AF_Exclusive);
+      cmd.addOption("--help",                 "-h",  "print this help text and exit", OFCommandLine::AF_Exclusive);
+      cmd.addOption("--version",                     "print version information and exit", OFCommandLine::AF_Exclusive);
       OFLog::addOptions(cmd);
 
     cmd.addGroup("input options:");
index 3bc5527bf26d2c6a39f49ea7f2462d8c14d780da..bf42b3959460027e6a333928248d687187e0293e 100644 (file)
@@ -30,7 +30,7 @@ with a particular transfer syntax.
 \section drtdump_parameters PARAMETERS
 
 \verbatim
-drtfile-in  DICOM RT input filename to be dumped
+drtfile-in  DICOM RT input filename to be dumped ("-" for stdin)
 \endverbatim
 
 \section drtdump_options OPTIONS
@@ -181,7 +181,7 @@ It is an error if no data dictionary can be loaded.
 
 \section drtdump_copyright COPYRIGHT
 
-Copyright (C) 2010-2022 by OFFIS e.V. and ICSMED AG, Escherweg 2, 26121
+Copyright (C) 2010-2023 by OFFIS e.V. and ICSMED AG, Escherweg 2, 26121
 Oldenburg, Germany.
 
 */
index f41d7f367cc21b59753e252784f935d54dc8c914..b2885c26e559f44073bec2746102c197446e06b5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2022, OFFIS e.V.
+ *  Copyright (C) 2012-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -71,11 +71,18 @@ public:
     /** Get the DicomImage instance for this RT Image.
      *  @return the DicomImage instance for this RT Image, may be NULL!
      */
-    DicomImage *getImage() { return image_; }
+    DicomImage *getImage()
+    {
+        return image_;
+    }
+
     /** Get the DicomImage instance for this RT Image.
      *  @return the DicomImage instance for this RT Image, may be NULL!
      */
-    const DicomImage *getImage() const { return image_; }
+    const DicomImage *getImage() const
+    {
+        return image_;
+    }
 
     /** Get the number of pixels in one row
      *  @return number of pixels in one row
index 8c53e2baadf4d4ed706b72c80904f1f8763d6554..4b734b61f1d31cf467b312055aed0707745b6cee 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -19,7 +19,9 @@
 
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtadcs.h"   // for AdmittingDiagnosesCodeSequence
+#include "dcmtk/dcmrt/seq/drtars.h"    // for AnatomicRegionSequence
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
+#include "dcmtk/dcmrt/seq/drtcttcs.h"  // for ClinicalTrialTimePointTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtiis.h"    // for IconImageSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtiseis.h"  // for IssuerOfServiceEpisodeIDSequence
 #include "dcmtk/dcmrt/seq/drtmps.h"    // for MACParametersSequence
 #include "dcmtk/dcmrt/seq/drtmris.h"   // for MappingResourceIdentificationSequence
-#include "dcmtk/dcmrt/seq/drtmls.h"    // for ModalityLUTSequence
 #include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtoas.h"    // for OriginalAttributesSequence
 #include "dcmtk/dcmrt/seq/drtopis.h"   // for OtherPatientIDsSequence
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
-#include "dcmtk/dcmrt/seq/drtpsss.h"   // for PredecessorStructureSetSequence
+#include "dcmtk/dcmrt/seq/drtplos.h"   // for PlanOverviewSequence
+#include "dcmtk/dcmrt/seq/drtpass.h"   // for PrimaryAnatomicStructureSequence
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
-#include "dcmtk/dcmrt/seq/drtrcs.h"    // for ROIContourSequence
-#include "dcmtk/dcmrt/seq/drtrdros.h"  // for RTDoseROISequence
 #include "dcmtk/dcmrt/seq/drtrwvms.h"  // for RealWorldValueMappingSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
-#include "dcmtk/dcmrt/seq/drtrfors.h"  // for ReferencedFrameOfReferenceSequence
+#include "dcmtk/dcmrt/seq/drtrvcs.h"   // for ReasonForVisitCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdps.h"   // for ReferencedDefinedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
-#include "dcmtk/dcmrt/seq/drtrrtps.h"  // for ReferencedRTPlanSequence
+#include "dcmtk/dcmrt/seq/drtrpprs.h"  // for ReferencedPerformedProtocolSequence
+#include "dcmtk/dcmrt/seq/drtrtps1.h"  // for ReferencedRTPlanSequence
 #include "dcmtk/dcmrt/seq/drtrsers.h"  // for ReferencedSeriesSequence
 #include "dcmtk/dcmrt/seq/drtrsrs.h"   // for ReferencedSpatialRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtrsss.h"   // for ReferencedStructureSetSequence
 #include "dcmtk/dcmrt/seq/drtrss.h"    // for ReferencedStudySequence
-#include "dcmtk/dcmrt/seq/drtrtrs2.h"  // for ReferencedTreatmentRecordSequence
+#include "dcmtk/dcmrt/seq/drtrtrs1.h"  // for ReferencedTreatmentRecordSequence
 #include "dcmtk/dcmrt/seq/drtrpis.h"   // for ReferringPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
@@ -77,7 +80,6 @@
 #include "dcmtk/dcmrt/seq/drtspgis.h"  // for SourcePatientGroupIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
 #include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
-#include "dcmtk/dcmrt/seq/drtssrs.h"   // for StructureSetROISequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
 #include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
@@ -223,30 +225,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFBool isMultiFrameModulePresent(const OFBool complete = OFFalse);
 
-    /** check whether OverlayPlaneModule (U) is present.
-     *  By default, a module is reported as being present if at least one attribute
-     *  from this module has a non-empty value.
-     *  @param  complete  check for all mandatory attributes of this module if enabled
-     *  @return OFTrue if module is present, OFFalse otherwise
-     */
-    virtual OFBool isOverlayPlaneModulePresent(const OFBool complete = OFFalse);
-
-    /** check whether MultiFrameOverlayModule (U) is present.
-     *  By default, a module is reported as being present if at least one attribute
-     *  from this module has a non-empty value.
-     *  @param  complete  check for all mandatory attributes of this module if enabled
-     *  @return OFTrue if module is present, OFFalse otherwise
-     */
-    virtual OFBool isMultiFrameOverlayModulePresent(const OFBool complete = OFFalse);
-
-    /** check whether ModalityLUTModule (U) is present.
-     *  By default, a module is reported as being present if at least one attribute
-     *  from this module has a non-empty value.
-     *  @param  complete  check for all mandatory attributes of this module if enabled
-     *  @return OFTrue if module is present, OFFalse otherwise
-     */
-    virtual OFBool isModalityLUTModulePresent(const OFBool complete = OFFalse);
-
     /** check whether RTDVHModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -255,30 +233,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFBool isRTDVHModulePresent(const OFBool complete = OFFalse);
 
-    /** check whether StructureSetModule (C) is present.
-     *  By default, a module is reported as being present if at least one attribute
-     *  from this module has a non-empty value.
-     *  @param  complete  check for all mandatory attributes of this module if enabled
-     *  @return OFTrue if module is present, OFFalse otherwise
-     */
-    virtual OFBool isStructureSetModulePresent(const OFBool complete = OFFalse);
-
-    /** check whether ROIContourModule (C) is present.
-     *  By default, a module is reported as being present if at least one attribute
-     *  from this module has a non-empty value.
-     *  @param  complete  check for all mandatory attributes of this module if enabled
-     *  @return OFTrue if module is present, OFFalse otherwise
-     */
-    virtual OFBool isROIContourModulePresent(const OFBool complete = OFFalse);
-
-    /** check whether RTDoseROIModule (C) is present.
-     *  By default, a module is reported as being present if at least one attribute
-     *  from this module has a non-empty value.
-     *  @param  complete  check for all mandatory attributes of this module if enabled
-     *  @return OFTrue if module is present, OFFalse otherwise
-     */
-    virtual OFBool isRTDoseROIModulePresent(const OFBool complete = OFFalse);
-
     /** check whether CommonInstanceReferenceModule (U) is present.
      *  By default, a module is reported as being present if at least one attribute
      *  from this module has a non-empty value.
@@ -304,41 +258,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getAccessionNumber(OFString &value, const signed long pos = 0) const;
 
-    /** get AcquisitionDate (0008,0022)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getAcquisitionDate(OFString &value, const signed long pos = 0) const;
-
-    /** get AcquisitionDateTime (0008,002a)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getAcquisitionDateTime(OFString &value, const signed long pos = 0) const;
-
-    /** get AcquisitionNumber (0020,0012)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getAcquisitionNumber(OFString &value, const signed long pos = 0) const;
-
-    /** get AcquisitionNumber (0020,0012)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getAcquisitionNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-    /** get AcquisitionTime (0008,0032)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getAcquisitionTime(OFString &value, const signed long pos = 0) const;
-
     /** get AdditionalPatientHistory (0010,21b0)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -374,6 +293,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get BarcodeValue (2200,0005)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const;
+
     /** get BitsAllocated (0028,0100)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1)
@@ -611,6 +537,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get DeviceUID (0018,1002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
     /** get DoseComment (3004,0006)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -653,6 +586,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getDoseUnits(OFString &value, const signed long pos = 0) const;
 
+    /** get EncapsulatedPixelDataValueTotalLength (7fe0,0003)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos = 0) const;
+
+    /** get EntityLongLabel (3010,0038)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const;
+
     /** get EthnicGroup (0010,2160)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -660,6 +607,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getEthnicGroup(OFString &value, const signed long pos = 0) const;
 
+    /** get ExtendedOffsetTable (7fe0,0001)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  count  stores number of items in the result array (if not NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getExtendedOffsetTable(Uint64 *&value, unsigned long *count = NULL) const;
+
+    /** get ExtendedOffsetTableLengths (7fe0,0002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  count  stores number of items in the result array (if not NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count = NULL) const;
+
     /** get FrameIncrementPointer (0028,0009)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -736,12 +697,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getImageComments(OFString &value, const signed long pos = 0) const;
 
-    /** get ImageFrameOrigin (60xx,0051)
+    /** get ImageLaterality (0020,0062)
      *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition getImageFrameOrigin(Uint16 &value, const unsigned long pos = 0) const;
+    virtual OFCondition getImageLaterality(OFString &value, const signed long pos = 0) const;
 
     /** get ImageOrientationPatient (0020,0037)
      *  @param  value  reference to variable in which the value should be stored
@@ -790,20 +751,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getImageType(OFString &value, const signed long pos = 0) const;
 
-    /** get ImagesInAcquisition (0020,1002)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getImagesInAcquisition(OFString &value, const signed long pos = 0) const;
-
-    /** get ImagesInAcquisition (0020,1002)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getImagesInAcquisition(Sint32 &value, const unsigned long pos = 0) const;
-
     /** get InstanceCoercionDateTime (0008,0015)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -846,6 +793,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get InstanceOriginStatus (0400,0600)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const;
+
     /** get InstitutionAddress (0008,0081)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -867,13 +821,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
 
-    /** get IrradiationEventUID (0008,3010)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getIrradiationEventUID(OFString &value, const signed long pos = 0) const;
-
     /** get IssuerOfPatientID (0010,0021)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -957,6 +904,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
 
+    /** get ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const;
+
     /** get ManufacturerModelName (0008,1090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1047,20 +1001,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getNumberOfFrames(Sint32 &value, const unsigned long pos = 0) const;
 
-    /** get NumberOfFramesInOverlay (60xx,0015)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getNumberOfFramesInOverlay(OFString &value, const signed long pos = 0) const;
-
-    /** get NumberOfFramesInOverlay (60xx,0015)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getNumberOfFramesInOverlay(Sint32 &value, const unsigned long pos = 0) const;
-
     /** get Occupation (0010,2180)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1089,69 +1029,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getOtherPatientNames(OFString &value, const signed long pos = 0) const;
 
-    /** get OverlayBitPosition (60xx,0102)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayBitPosition(Uint16 &value, const unsigned long pos = 0) const;
-
-    /** get OverlayBitsAllocated (60xx,0100)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayBitsAllocated(Uint16 &value, const unsigned long pos = 0) const;
-
-    /** get OverlayColumns (60xx,0011)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayColumns(Uint16 &value, const unsigned long pos = 0) const;
-
-    /** get OverlayDescription (60xx,0022)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayDescription(OFString &value, const signed long pos = 0) const;
-
-    /** get OverlayLabel (60xx,1500)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayLabel(OFString &value, const signed long pos = 0) const;
-
-    /** get OverlayOrigin (60xx,0050)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayOrigin(Sint16 &value, const unsigned long pos = 0) const;
-
-    /** get OverlayRows (60xx,0010)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayRows(Uint16 &value, const unsigned long pos = 0) const;
-
-    /** get OverlaySubtype (60xx,0045)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlaySubtype(OFString &value, const signed long pos = 0) const;
-
-    /** get OverlayType (60xx,0040)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getOverlayType(OFString &value, const signed long pos = 0) const;
-
     /** get PatientAge (0010,1010)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1473,47 +1350,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const;
 
-    /** get ROIArea (60xx,1301)
+    /** get ReasonForVisit (0032,1066)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition getROIArea(OFString &value, const signed long pos = 0) const;
-
-    /** get ROIArea (60xx,1301)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getROIArea(Sint32 &value, const unsigned long pos = 0) const;
-
-    /** get ROIMean (60xx,1302)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getROIMean(OFString &value, const signed long pos = 0) const;
-
-    /** get ROIMean (60xx,1302)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getROIMean(Float64 &value, const unsigned long pos = 0) const;
-
-    /** get ROIStandardDeviation (60xx,1303)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getROIStandardDeviation(OFString &value, const signed long pos = 0) const;
-
-    /** get ROIStandardDeviation (60xx,1303)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getROIStandardDeviation(Float64 &value, const unsigned long pos = 0) const;
+    virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const;
 
     /** get RecognizableVisualFeatures (0028,0302)
      *  @param  value  reference to variable in which the value should be stored
@@ -1550,40 +1392,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const;
 
-    /** get RescaleIntercept (0028,1052)
+    /** get RequestingService (0032,1033)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition getRescaleIntercept(OFString &value, const signed long pos = 0) const;
-
-    /** get RescaleIntercept (0028,1052)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getRescaleIntercept(Float64 &value, const unsigned long pos = 0) const;
-
-    /** get RescaleSlope (0028,1053)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getRescaleSlope(OFString &value, const signed long pos = 0) const;
-
-    /** get RescaleSlope (0028,1053)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getRescaleSlope(Float64 &value, const unsigned long pos = 0) const;
-
-    /** get RescaleType (0028,1054)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getRescaleType(OFString &value, const signed long pos = 0) const;
+    virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const;
 
     /** get ResponsibleOrganization (0010,2299)
      *  @param  value  reference to variable in which the value should be stored
@@ -1760,6 +1574,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getSoftwareVersions(OFString &value, const signed long pos = 0) const;
 
+    /** get SpacingBetweenSlices (0018,0088)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSpacingBetweenSlices(OFString &value, const signed long pos = 0) const;
+
+    /** get SpacingBetweenSlices (0018,0088)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getSpacingBetweenSlices(Float64 &value, const unsigned long pos = 0) const;
+
     /** get SpatialResolution (0018,1050)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1823,41 +1651,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getStrainNomenclature(OFString &value, const signed long pos = 0) const;
 
-    /** get StructureSetDate (3006,0008)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getStructureSetDate(OFString &value, const signed long pos = 0) const;
-
-    /** get StructureSetDescription (3006,0006)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getStructureSetDescription(OFString &value, const signed long pos = 0) const;
-
-    /** get StructureSetLabel (3006,0002)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getStructureSetLabel(OFString &value, const signed long pos = 0) const;
-
-    /** get StructureSetName (3006,0004)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getStructureSetName(OFString &value, const signed long pos = 0) const;
-
-    /** get StructureSetTime (3006,0009)
-     *  @param  value  reference to variable in which the value should be stored
-     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition getStructureSetTime(OFString &value, const signed long pos = 0) const;
-
     /** get StudyDate (0008,0020)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1900,19 +1693,33 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getTimeOfLastCalibration(OFString &value, const signed long pos = 0) const;
 
-    /** get TimezoneOffsetFromUTC (0008,0201)
+    /** get TimezoneOffsetFromUTC (0008,0201)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const;
+
+    /** get TissueHeterogeneityCorrection (3004,0014)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTissueHeterogeneityCorrection(OFString &value, const signed long pos = 0) const;
+
+    /** get TreatmentSessionUID (300a,0700)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const;
+    virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const;
 
-    /** get TissueHeterogeneityCorrection (3004,0014)
+    /** get TypeOfPatientID (0010,0022)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition getTissueHeterogeneityCorrection(OFString &value, const signed long pos = 0) const;
+    virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
 
   // --- get pixel data element ---
 
@@ -1942,6 +1749,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTAdmittingDiagnosesCodeSequence &getAdmittingDiagnosesCodeSequence() const
         { return AdmittingDiagnosesCodeSequence; }
 
+    /** get AnatomicRegionSequence (0008,2218)
+     *  @return reference to sequence element
+     */
+    DRTAnatomicRegionSequence &getAnatomicRegionSequence()
+        { return AnatomicRegionSequence; }
+
+    /** get AnatomicRegionSequence (0008,2218)
+     *  @return const reference to sequence element
+     */
+    const DRTAnatomicRegionSequence &getAnatomicRegionSequence() const
+        { return AnatomicRegionSequence; }
+
     /** get BreedRegistrationSequence (0010,2294)
      *  @return reference to sequence element
      */
@@ -1954,6 +1773,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const
         { return BreedRegistrationSequence; }
 
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return reference to sequence element
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence()
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return const reference to sequence element
+     */
+    const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
     /** get CodingSchemeIdentificationSequence (0008,0110)
      *  @return reference to sequence element
      */
@@ -2146,6 +1977,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTIconImageSequence &getIconImageSequence() const
         { return IconImageSequence; }
 
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return reference to sequence element
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return const reference to sequence element
+     */
+    const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
     /** get IssuerOfAccessionNumberSequence (0008,0051)
      *  @return reference to sequence element
      */
@@ -2218,18 +2061,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTMappingResourceIdentificationSequence &getMappingResourceIdentificationSequence() const
         { return MappingResourceIdentificationSequence; }
 
-    /** get ModalityLUTSequence (0028,3000)
-     *  @return reference to sequence element
-     */
-    DRTModalityLUTSequence &getModalityLUTSequence()
-        { return ModalityLUTSequence; }
-
-    /** get ModalityLUTSequence (0028,3000)
-     *  @return const reference to sequence element
-     */
-    const DRTModalityLUTSequence &getModalityLUTSequence() const
-        { return ModalityLUTSequence; }
-
     /** get OperatorIdentificationSequence (0008,1072)
      *  @return reference to sequence element
      */
@@ -2338,17 +2169,29 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
-    /** get PredecessorStructureSetSequence (3006,0018)
+    /** get PlanOverviewSequence (300c,0116)
+     *  @return reference to sequence element
+     */
+    DRTPlanOverviewSequence &getPlanOverviewSequence()
+        { return PlanOverviewSequence; }
+
+    /** get PlanOverviewSequence (300c,0116)
+     *  @return const reference to sequence element
+     */
+    const DRTPlanOverviewSequence &getPlanOverviewSequence() const
+        { return PlanOverviewSequence; }
+
+    /** get PrimaryAnatomicStructureSequence (0008,2228)
      *  @return reference to sequence element
      */
-    DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence()
-        { return PredecessorStructureSetSequence; }
+    DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence()
+        { return PrimaryAnatomicStructureSequence; }
 
-    /** get PredecessorStructureSetSequence (3006,0018)
+    /** get PrimaryAnatomicStructureSequence (0008,2228)
      *  @return const reference to sequence element
      */
-    const DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence() const
-        { return PredecessorStructureSetSequence; }
+    const DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() const
+        { return PrimaryAnatomicStructureSequence; }
 
     /** get PrivateDataElementCharacteristicsSequence (0008,0300)
      *  @return reference to sequence element
@@ -2374,30 +2217,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTProcedureCodeSequence &getProcedureCodeSequence() const
         { return ProcedureCodeSequence; }
 
-    /** get ROIContourSequence (3006,0039)
-     *  @return reference to sequence element
-     */
-    DRTROIContourSequence &getROIContourSequence()
-        { return ROIContourSequence; }
-
-    /** get ROIContourSequence (3006,0039)
-     *  @return const reference to sequence element
-     */
-    const DRTROIContourSequence &getROIContourSequence() const
-        { return ROIContourSequence; }
-
-    /** get RTDoseROISequence (3004,0010)
-     *  @return reference to sequence element
-     */
-    DRTRTDoseROISequence &getRTDoseROISequence()
-        { return RTDoseROISequence; }
-
-    /** get RTDoseROISequence (3004,0010)
-     *  @return const reference to sequence element
-     */
-    const DRTRTDoseROISequence &getRTDoseROISequence() const
-        { return RTDoseROISequence; }
-
     /** get RealWorldValueMappingSequence (0040,9096)
      *  @return reference to sequence element
      */
@@ -2422,17 +2241,29 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
-    /** get ReferencedFrameOfReferenceSequence (3006,0010)
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return reference to sequence element
+     */
+    DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence()
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return const reference to sequence element
+     */
+    const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
      *  @return reference to sequence element
      */
-    DRTReferencedFrameOfReferenceSequence &getReferencedFrameOfReferenceSequence()
-        { return ReferencedFrameOfReferenceSequence; }
+    DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence()
+        { return ReferencedDefinedProtocolSequence; }
 
-    /** get ReferencedFrameOfReferenceSequence (3006,0010)
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
      *  @return const reference to sequence element
      */
-    const DRTReferencedFrameOfReferenceSequence &getReferencedFrameOfReferenceSequence() const
-        { return ReferencedFrameOfReferenceSequence; }
+    const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const
+        { return ReferencedDefinedProtocolSequence; }
 
     /** get ReferencedInstanceSequence (0008,114a)
      *  @return reference to sequence element
@@ -2482,6 +2313,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const
         { return ReferencedPerformedProcedureStepSequence; }
 
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return reference to sequence element
+     */
+    DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence()
+        { return ReferencedPerformedProtocolSequence; }
+
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const
+        { return ReferencedPerformedProtocolSequence; }
+
     /** get ReferencedRTPlanSequence (300c,0002)
      *  @return reference to sequence element
      */
@@ -2638,18 +2481,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTStrainStockSequence &getStrainStockSequence() const
         { return StrainStockSequence; }
 
-    /** get StructureSetROISequence (3006,0020)
-     *  @return reference to sequence element
-     */
-    DRTStructureSetROISequence &getStructureSetROISequence()
-        { return StructureSetROISequence; }
-
-    /** get StructureSetROISequence (3006,0020)
-     *  @return const reference to sequence element
-     */
-    const DRTStructureSetROISequence &getStructureSetROISequence() const
-        { return StructureSetROISequence; }
-
     /** get StudiesContainingOtherReferencedInstancesSequence (0008,1200)
      *  @return reference to sequence element
      */
@@ -2683,34 +2514,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setAccessionNumber(const OFString &value, const OFBool check = OFTrue);
 
-    /** set AcquisitionDate (0008,0022)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setAcquisitionDate(const OFString &value, const OFBool check = OFTrue);
-
-    /** set AcquisitionDateTime (0008,002a)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setAcquisitionDateTime(const OFString &value, const OFBool check = OFTrue);
-
-    /** set AcquisitionNumber (0020,0012)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setAcquisitionNumber(const OFString &value, const OFBool check = OFTrue);
-
-    /** set AcquisitionTime (0008,0032)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setAcquisitionTime(const OFString &value, const OFBool check = OFTrue);
-
     /** set AdditionalPatientHistory (0010,21b0)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
@@ -2746,6 +2549,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set BarcodeValue (2200,0005)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue);
+
     /** set BitsAllocated (0028,0100)
      *  @param  value  value to be set (should be valid for this VR)
      *  @param  pos    index of the value to be set (0..vm-1), vm=1
@@ -2963,6 +2773,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DeviceUID (0018,1002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set DoseComment (3004,0006)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2998,6 +2815,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setDoseUnits(const OFString &value, const OFBool check = OFTrue);
 
+    /** set EncapsulatedPixelDataValueTotalLength (7fe0,0003)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos = 0);
+
+    /** set EntityLongLabel (3010,0038)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue);
+
     /** set EthnicGroup (0010,2160)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -3005,6 +2836,20 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setEthnicGroup(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ExtendedOffsetTable (7fe0,0001)
+     *  @param  value  array value to be set (data is copied)
+     *  @param  count  number of items in the array
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setExtendedOffsetTable(const Uint64 *value, const unsigned long count);
+
+    /** set ExtendedOffsetTableLengths (7fe0,0002)
+     *  @param  value  array value to be set (data is copied)
+     *  @param  count  number of items in the array
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count);
+
     /** set FrameIncrementPointer (0028,0009)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (AT) and VM (1-n) if enabled
@@ -3068,12 +2913,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setImageComments(const OFString &value, const OFBool check = OFTrue);
 
-    /** set ImageFrameOrigin (60xx,0051)
-     *  @param  value  value to be set (should be valid for this VR)
-     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+    /** set ImageLaterality (0020,0062)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition setImageFrameOrigin(const Uint16 value, const unsigned long pos = 0);
+    virtual OFCondition setImageLaterality(const OFString &value, const OFBool check = OFTrue);
 
     /** set ImageOrientationPatient (0020,0037)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
@@ -3096,13 +2941,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setImageType(const OFString &value, const OFBool check = OFTrue);
 
-    /** set ImagesInAcquisition (0020,1002)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setImagesInAcquisition(const OFString &value, const OFBool check = OFTrue);
-
     /** set InstanceCoercionDateTime (0008,0015)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
@@ -3138,6 +2976,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set InstanceOriginStatus (0400,0600)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set InstitutionAddress (0008,0081)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -3159,13 +3004,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
 
-    /** set IrradiationEventUID (0008,3010)
-     *  @param  value  value to be set (possibly multi-valued) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setIrradiationEventUID(const OFString &value, const OFBool check = OFTrue);
-
     /** set IssuerOfPatientID (0010,0021)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -3236,6 +3074,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ManufacturerModelName (0008,1090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -3292,13 +3137,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setNumberOfFrames(const OFString &value, const OFBool check = OFTrue);
 
-    /** set NumberOfFramesInOverlay (60xx,0015)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setNumberOfFramesInOverlay(const OFString &value, const OFBool check = OFTrue);
-
     /** set Occupation (0010,2180)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -3327,69 +3165,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setOtherPatientNames(const OFString &value, const OFBool check = OFTrue);
 
-    /** set OverlayBitPosition (60xx,0102)
-     *  @param  value  value to be set (should be valid for this VR)
-     *  @param  pos    index of the value to be set (0..vm-1), vm=1
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayBitPosition(const Uint16 value, const unsigned long pos = 0);
-
-    /** set OverlayBitsAllocated (60xx,0100)
-     *  @param  value  value to be set (should be valid for this VR)
-     *  @param  pos    index of the value to be set (0..vm-1), vm=1
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayBitsAllocated(const Uint16 value, const unsigned long pos = 0);
-
-    /** set OverlayColumns (60xx,0011)
-     *  @param  value  value to be set (should be valid for this VR)
-     *  @param  pos    index of the value to be set (0..vm-1), vm=1
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayColumns(const Uint16 value, const unsigned long pos = 0);
-
-    /** set OverlayDescription (60xx,0022)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayDescription(const OFString &value, const OFBool check = OFTrue);
-
-    /** set OverlayLabel (60xx,1500)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayLabel(const OFString &value, const OFBool check = OFTrue);
-
-    /** set OverlayOrigin (60xx,0050)
-     *  @param  value  value to be set (should be valid for this VR)
-     *  @param  pos    index of the value to be set (0..vm-1), vm=2
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayOrigin(const Sint16 value, const unsigned long pos = 0);
-
-    /** set OverlayRows (60xx,0010)
-     *  @param  value  value to be set (should be valid for this VR)
-     *  @param  pos    index of the value to be set (0..vm-1), vm=1
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayRows(const Uint16 value, const unsigned long pos = 0);
-
-    /** set OverlaySubtype (60xx,0045)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlaySubtype(const OFString &value, const OFBool check = OFTrue);
-
-    /** set OverlayType (60xx,0040)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setOverlayType(const OFString &value, const OFBool check = OFTrue);
-
     /** set PatientAge (0010,1010)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (AS) and VM (1) if enabled
@@ -3670,26 +3445,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue);
 
-    /** set ROIArea (60xx,1301)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setROIArea(const OFString &value, const OFBool check = OFTrue);
-
-    /** set ROIMean (60xx,1302)
+    /** set ReasonForVisit (0032,1066)
      *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setROIMean(const OFString &value, const OFBool check = OFTrue);
-
-    /** set ROIStandardDeviation (60xx,1303)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition setROIStandardDeviation(const OFString &value, const OFBool check = OFTrue);
+    virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue);
 
     /** set RecognizableVisualFeatures (0028,0302)
      *  @param  value  value to be set (single value only) or "" for no value
@@ -3726,26 +3487,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue);
 
-    /** set RescaleIntercept (0028,1052)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setRescaleIntercept(const OFString &value, const OFBool check = OFTrue);
-
-    /** set RescaleSlope (0028,1053)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setRescaleSlope(const OFString &value, const OFBool check = OFTrue);
-
-    /** set RescaleType (0028,1054)
+    /** set RequestingService (0032,1033)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition setRescaleType(const OFString &value, const OFBool check = OFTrue);
+    virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue);
 
     /** set ResponsibleOrganization (0010,2299)
      *  @param  value  value to be set (single value only) or "" for no value
@@ -3901,6 +3648,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setSoftwareVersions(const OFString &value, const OFBool check = OFTrue);
 
+    /** set SpacingBetweenSlices (0018,0088)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setSpacingBetweenSlices(const OFString &value, const OFBool check = OFTrue);
+
     /** set SpatialResolution (0018,1050)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -3957,41 +3711,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setStrainNomenclature(const OFString &value, const OFBool check = OFTrue);
 
-    /** set StructureSetDate (3006,0008)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setStructureSetDate(const OFString &value, const OFBool check = OFTrue);
-
-    /** set StructureSetDescription (3006,0006)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setStructureSetDescription(const OFString &value, const OFBool check = OFTrue);
-
-    /** set StructureSetLabel (3006,0002)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setStructureSetLabel(const OFString &value, const OFBool check = OFTrue);
-
-    /** set StructureSetName (3006,0004)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setStructureSetName(const OFString &value, const OFBool check = OFTrue);
-
-    /** set StructureSetTime (3006,0009)
-     *  @param  value  value to be set (single value only) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition setStructureSetTime(const OFString &value, const OFBool check = OFTrue);
-
     /** set StudyDate (0008,0020)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
@@ -4048,9 +3767,19 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setTissueHeterogeneityCorrection(const OFString &value, const OFBool check = OFTrue);
 
-  // --- all other attributes (without get/set methods) ---
+    /** set TreatmentSessionUID (300a,0700)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue);
 
-    // - OverlayData (60xx,3000)
+    /** set TypeOfPatientID (0010,0022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
 
   protected:
@@ -4082,6 +3811,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmLongString IssuerOfPatientID;
     /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
+    /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3
+    DcmCodeString TypeOfPatientID;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
     /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
@@ -4200,6 +3931,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmPersonName NameOfPhysiciansReadingStudy;
     /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3
     DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence;
+    /// RequestingService (0032,1033) vr=LO, vm=1, type=3
+    DcmLongString RequestingService;
     /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3
     DRTRequestingServiceCodeSequence RequestingServiceCodeSequence;
     /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3
@@ -4249,6 +3982,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmLongString AdmissionID;
     /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3
     DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence;
+    /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3
+    DcmUnlimitedText ReasonForVisit;
+    /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3
+    DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence;
     /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3
     DcmLongString ServiceEpisodeID;
     /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3
@@ -4264,6 +4001,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmLongString ClinicalTrialTimePointID;
     /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3
     DcmShortText ClinicalTrialTimePointDescription;
+    /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3
+    DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence;
     /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3
     DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent;
     /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C
@@ -4311,6 +4050,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence;
     /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3
     DcmShortText CommentsOnThePerformedProcedureStep;
+    /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier TreatmentSessionUID;
 
     // --- ClinicalTrialSeriesModule (U) ---
 
@@ -4340,8 +4081,12 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmShortString StationName;
     /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
     DcmLongString InstitutionalDepartmentName;
+    /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+    DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
     /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
     DcmLongString ManufacturerModelName;
+    /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier ManufacturerDeviceClassUID;
     /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
     DcmLongString DeviceSerialNumber;
     /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3
@@ -4350,6 +4095,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmLongString GantryID;
     /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
     DRTUDISequence UDISequence;
+    /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier DeviceUID;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -4362,7 +4109,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     // --- GeneralImageModule (C) ---
 
     // InstanceNumber (0020,0013) vr=IS, vm=1, type=2
-    // - also defined in: RTDoseModule, StructureSetModule, SOPCommonModule
+    // - also defined in: RTDoseModule, SOPCommonModule
     // DcmIntegerString InstanceNumber;
     /// PatientOrientation (0020,0020) vr=CS, vm=2, type=2C
     DcmCodeString PatientOrientation;
@@ -4374,16 +4121,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     // DcmTime ContentTime;
     /// ImageType (0008,0008) vr=CS, vm=2-n, type=3
     DcmCodeString ImageType;
-    /// AcquisitionNumber (0020,0012) vr=IS, vm=1, type=3
-    DcmIntegerString AcquisitionNumber;
-    /// AcquisitionDate (0008,0022) vr=DA, vm=1, type=3
-    DcmDate AcquisitionDate;
-    /// AcquisitionTime (0008,0032) vr=TM, vm=1, type=3
-    DcmTime AcquisitionTime;
-    /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3
-    DcmDateTime AcquisitionDateTime;
-    /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3
-    DcmIntegerString ImagesInAcquisition;
     /// ImageComments (0020,4000) vr=LT, vm=1, type=3
     DcmLongText ImageComments;
     /// QualityControlImage (0028,0300) vr=CS, vm=1, type=3
@@ -4402,10 +4139,14 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTIconImageSequence IconImageSequence;
     /// PresentationLUTShape (2050,0020) vr=CS, vm=1, type=3
     DcmCodeString PresentationLUTShape;
-    /// IrradiationEventUID (0008,3010) vr=UI, vm=1-n, type=3
-    DcmUniqueIdentifier IrradiationEventUID;
     /// RealWorldValueMappingSequence (0040,9096) vr=SQ, vm=1, type=3
     DRTRealWorldValueMappingSequence RealWorldValueMappingSequence;
+    /// ImageLaterality (0020,0062) vr=CS, vm=1, type=3
+    DcmCodeString ImageLaterality;
+    /// AnatomicRegionSequence (0008,2218) vr=SQ, vm=1, type=3
+    DRTAnatomicRegionSequence AnatomicRegionSequence;
+    /// PrimaryAnatomicStructureSequence (0008,2228) vr=SQ, vm=1, type=3
+    DRTPrimaryAnatomicStructureSequence PrimaryAnatomicStructureSequence;
 
     // --- ImagePlaneModule (C) ---
 
@@ -4417,6 +4158,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmDecimalString ImagePositionPatient;
     /// SliceThickness (0018,0050) vr=DS, vm=1, type=2
     DcmDecimalString SliceThickness;
+    /// SpacingBetweenSlices (0018,0088) vr=DS, vm=1, type=3
+    DcmDecimalString SpacingBetweenSlices;
     /// SliceLocation (0020,1041) vr=DS, vm=1, type=3
     DcmDecimalString SliceLocation;
 
@@ -4474,6 +4217,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmUniversalResourceIdentifierOrLocator PixelDataProviderURL;
     /// PixelPaddingRangeLimit (0028,0121) vr=US/SS, vm=1, type=1C
     DcmUnsignedShort PixelPaddingRangeLimit;
+    /// ExtendedOffsetTable (7fe0,0001) vr=OV, vm=1, type=3
+    DcmOther64bitVeryLong ExtendedOffsetTable;
+    /// ExtendedOffsetTableLengths (7fe0,0002) vr=OV, vm=1, type=1C
+    DcmOther64bitVeryLong ExtendedOffsetTableLengths;
 
     // --- MultiFrameModule (C) ---
 
@@ -4483,53 +4230,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmAttributeTag FrameIncrementPointer;
     /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3
     DcmCodeString StereoPairsPresent;
-
-    // --- OverlayPlaneModule (U) ---
-
-    /// OverlayRows (60xx,0010) vr=US, vm=1, type=1
-    DcmUnsignedShort OverlayRows;
-    /// OverlayColumns (60xx,0011) vr=US, vm=1, type=1
-    DcmUnsignedShort OverlayColumns;
-    /// OverlayType (60xx,0040) vr=CS, vm=1, type=1
-    DcmCodeString OverlayType;
-    /// OverlayOrigin (60xx,0050) vr=SS, vm=2, type=1
-    DcmSignedShort OverlayOrigin;
-    /// OverlayBitsAllocated (60xx,0100) vr=US, vm=1, type=1
-    DcmUnsignedShort OverlayBitsAllocated;
-    /// OverlayBitPosition (60xx,0102) vr=US, vm=1, type=1
-    DcmUnsignedShort OverlayBitPosition;
-    /// OverlayData (60xx,3000) vr=OB/OW, vm=1, type=1
-    DcmOtherByteOtherWord OverlayData;
-    /// OverlayDescription (60xx,0022) vr=LO, vm=1, type=3
-    DcmLongString OverlayDescription;
-    /// OverlaySubtype (60xx,0045) vr=LO, vm=1, type=3
-    DcmLongString OverlaySubtype;
-    /// OverlayLabel (60xx,1500) vr=LO, vm=1, type=3
-    DcmLongString OverlayLabel;
-    /// ROIArea (60xx,1301) vr=IS, vm=1, type=3
-    DcmIntegerString ROIArea;
-    /// ROIMean (60xx,1302) vr=DS, vm=1, type=3
-    DcmDecimalString ROIMean;
-    /// ROIStandardDeviation (60xx,1303) vr=DS, vm=1, type=3
-    DcmDecimalString ROIStandardDeviation;
-
-    // --- MultiFrameOverlayModule (U) ---
-
-    /// NumberOfFramesInOverlay (60xx,0015) vr=IS, vm=1, type=1
-    DcmIntegerString NumberOfFramesInOverlay;
-    /// ImageFrameOrigin (60xx,0051) vr=US, vm=1, type=3
-    DcmUnsignedShort ImageFrameOrigin;
-
-    // --- ModalityLUTModule (U) ---
-
-    /// ModalityLUTSequence (0028,3000) vr=SQ, vm=1, type=1C
-    DRTModalityLUTSequence ModalityLUTSequence;
-    /// RescaleIntercept (0028,1052) vr=DS, vm=1, type=1C
-    DcmDecimalString RescaleIntercept;
-    /// RescaleSlope (0028,1053) vr=DS, vm=1, type=1C
-    DcmDecimalString RescaleSlope;
-    /// RescaleType (0028,1054) vr=LO, vm=1, type=1C
-    DcmLongString RescaleType;
+    /// EncapsulatedPixelDataValueTotalLength (7fe0,0003) vr=UV, vm=1, type=3
+    DcmUnsigned64bitVeryLong EncapsulatedPixelDataValueTotalLength;
 
     // --- RTDoseModule (M) ---
 
@@ -4566,8 +4268,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     /// ReferencedSpatialRegistrationSequence (0070,0404) vr=SQ, vm=1, type=2C
     DRTReferencedSpatialRegistrationSequence ReferencedSpatialRegistrationSequence;
     /// InstanceNumber (0020,0013) vr=IS, vm=1, type=3
-    /// - also defined in: GeneralImageModule, StructureSetModule, SOPCommonModule
+    /// - also defined in: GeneralImageModule, SOPCommonModule
     DcmIntegerString InstanceNumber;
+    /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3
+    DcmLongString EntityLongLabel;
     /// DoseComment (3004,0006) vr=LO, vm=1, type=3
     DcmLongString DoseComment;
     /// NormalizationPoint (3004,0008) vr=DS, vm=3, type=3
@@ -4588,6 +4292,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTDerivationCodeSequence DerivationCodeSequence;
     /// ReferencedInstanceSequence (0008,114a) vr=SQ, vm=1, type=3
     DRTReferencedInstanceSequence ReferencedInstanceSequence;
+    /// PlanOverviewSequence (300c,0116) vr=SQ, vm=1, type=1C
+    DRTPlanOverviewSequence PlanOverviewSequence;
 
     // --- RTDVHModule (U) ---
 
@@ -4600,38 +4306,6 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     /// DVHSequence (3004,0050) vr=SQ, vm=1, type=1
     DRTDVHSequence DVHSequence;
 
-    // --- StructureSetModule (C) ---
-
-    /// StructureSetLabel (3006,0002) vr=SH, vm=1, type=1
-    DcmShortString StructureSetLabel;
-    /// StructureSetName (3006,0004) vr=LO, vm=1, type=3
-    DcmLongString StructureSetName;
-    /// StructureSetDescription (3006,0006) vr=ST, vm=1, type=3
-    DcmShortText StructureSetDescription;
-    // InstanceNumber (0020,0013) vr=IS, vm=1, type=3
-    // - also defined in: GeneralImageModule, RTDoseModule, SOPCommonModule
-    // DcmIntegerString InstanceNumber;
-    /// StructureSetDate (3006,0008) vr=DA, vm=1, type=2
-    DcmDate StructureSetDate;
-    /// StructureSetTime (3006,0009) vr=TM, vm=1, type=2
-    DcmTime StructureSetTime;
-    /// ReferencedFrameOfReferenceSequence (3006,0010) vr=SQ, vm=1, type=3
-    DRTReferencedFrameOfReferenceSequence ReferencedFrameOfReferenceSequence;
-    /// StructureSetROISequence (3006,0020) vr=SQ, vm=1, type=1
-    DRTStructureSetROISequence StructureSetROISequence;
-    /// PredecessorStructureSetSequence (3006,0018) vr=SQ, vm=1, type=3
-    DRTPredecessorStructureSetSequence PredecessorStructureSetSequence;
-
-    // --- ROIContourModule (C) ---
-
-    /// ROIContourSequence (3006,0039) vr=SQ, vm=1, type=1
-    DRTROIContourSequence ROIContourSequence;
-
-    // --- RTDoseROIModule (C) ---
-
-    /// RTDoseROISequence (3004,0010) vr=SQ, vm=1, type=1
-    DRTRTDoseROISequence RTDoseROISequence;
-
     // --- SOPCommonModule (M) ---
 
     /// SOPClassUID (0008,0016) vr=UI, vm=1, type=1
@@ -4663,7 +4337,7 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     /// ContributingEquipmentSequence (0018,a001) vr=SQ, vm=1, type=3
     DRTContributingEquipmentSequence ContributingEquipmentSequence;
     // InstanceNumber (0020,0013) vr=IS, vm=1, type=3
-    // - also defined in: GeneralImageModule, RTDoseModule, StructureSetModule
+    // - also defined in: GeneralImageModule, RTDoseModule
     // DcmIntegerString InstanceNumber;
     /// SOPInstanceStatus (0100,0410) vr=CS, vm=1, type=3
     DcmCodeString SOPInstanceStatus;
@@ -4693,6 +4367,14 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmCodeString ContentQualification;
     /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
     DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
+    /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3
+    DcmCodeString InstanceOriginStatus;
+    /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3
+    DcmLongText BarcodeValue;
+    /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C
+    DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence;
+    /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C
+    DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index 2c45d76643a7d33a0bb806b2419a4bfd53d54c72..0c3221078911122c2e68234e7fcaf6a5dae2de79 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2021, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -19,7 +19,9 @@
 
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtadcs.h"   // for AdmittingDiagnosesCodeSequence
+#include "dcmtk/dcmrt/seq/drtars.h"    // for AnatomicRegionSequence
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
+#include "dcmtk/dcmrt/seq/drtcttcs.h"  // for ClinicalTrialTimePointTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
@@ -33,6 +35,7 @@
 #include "dcmtk/dcmrt/seq/drtds.h"     // for DeviceSequence
 #include "dcmtk/dcmrt/seq/drtdss.h"    // for DigitalSignaturesSequence
 #include "dcmtk/dcmrt/seq/drteas.h"    // for EncryptedAttributesSequence
+#include "dcmtk/dcmrt/seq/drteblds.h"  // for EnhancedRTBeamLimitingDeviceSequence
 #include "dcmtk/dcmrt/seq/drtes.h"     // for ExposureSequence
 #include "dcmtk/dcmrt/seq/drtfms.h"    // for FluenceMapSequence
 #include "dcmtk/dcmrt/seq/drtfes.h"    // for FrameExtractionSequence
@@ -40,6 +43,7 @@
 #include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
 #include "dcmtk/dcmrt/seq/drtiis.h"    // for IconImageSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtpass.h"   // for PrimaryAnatomicStructureSequence
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrwvms.h"  // for RealWorldValueMappingSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrvcs.h"   // for ReasonForVisitCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdps.h"   // for ReferencedDefinedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
-#include "dcmtk/dcmrt/seq/drtrrtps5.h" // for ReferencedRTPlanSequence
+#include "dcmtk/dcmrt/seq/drtrpprs.h"  // for ReferencedPerformedProtocolSequence
+#include "dcmtk/dcmrt/seq/drtrtps4.h"  // for ReferencedRTPlanSequence
 #include "dcmtk/dcmrt/seq/drtrsers.h"  // for ReferencedSeriesSequence
 #include "dcmtk/dcmrt/seq/drtrss.h"    // for ReferencedStudySequence
 #include "dcmtk/dcmrt/seq/drtrpis.h"   // for ReferringPhysicianIdentificationSequence
@@ -82,7 +90,6 @@
 #include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 #include "dcmtk/dcmrt/seq/drtvls.h"    // for VOILUTSequence
 
-#include <cmath>
 
 /** Interface class for RTImageIOD
  *  @note Because of its many member variables, an instance of this class requires quite
@@ -304,6 +311,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getAcquisitionDateTime(OFString &value, const signed long pos = 0) const;
 
+    /** get AcquisitionDuration (0018,9073)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAcquisitionDuration(Float64 &value, const unsigned long pos = 0) const;
+
     /** get AcquisitionNumber (0020,0012)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -325,6 +339,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getAcquisitionTime(OFString &value, const signed long pos = 0) const;
 
+    /** get AcquisitionUID (0008,0017)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getAcquisitionUID(OFString &value, const signed long pos = 0) const;
+
     /** get ActualFrameDuration (0018,1242)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -381,6 +402,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get BarcodeValue (2200,0005)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const;
+
     /** get BeamLimitingDeviceAngle (300a,0120)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -743,6 +771,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get DeviceUID (0018,1002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
     /** get EffectiveDuration (0018,0072)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -757,6 +792,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getEffectiveDuration(Float64 &value, const unsigned long pos = 0) const;
 
+    /** get EncapsulatedPixelDataValueTotalLength (7fe0,0003)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos = 0) const;
+
     /** get EndCumulativeMetersetWeight (300c,0009)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -771,6 +813,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getEndCumulativeMetersetWeight(Float64 &value, const unsigned long pos = 0) const;
 
+    /** get EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos = 0) const;
+
     /** get EthnicGroup (0010,2160)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -799,6 +848,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getExposureTimeInms(Float64 &value, const unsigned long pos = 0) const;
 
+    /** get ExtendedOffsetTable (7fe0,0001)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  count  stores number of items in the result array (if not NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getExtendedOffsetTable(Uint64 *&value, unsigned long *count = NULL) const;
+
+    /** get ExtendedOffsetTableLengths (7fe0,0002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  count  stores number of items in the result array (if not NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count = NULL) const;
+
     /** get FractionNumber (3002,0029)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -938,6 +1001,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getImageComments(OFString &value, const signed long pos = 0) const;
 
+    /** get ImageLaterality (0020,0062)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getImageLaterality(OFString &value, const signed long pos = 0) const;
+
     /** get ImagePlanePixelSpacing (3002,0011)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1035,6 +1105,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get InstanceOriginStatus (0400,0600)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const;
+
     /** get InstitutionAddress (0008,0081)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1166,6 +1243,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
 
+    /** get ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const;
+
     /** get ManufacturerModelName (0008,1090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1745,6 +1829,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getRadiationMachineSSD(Float64 &value, const unsigned long pos = 0) const;
 
+    /** get ReasonForVisit (0032,1066)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const;
+
     /** get RecognizableVisualFeatures (0028,0302)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1829,6 +1920,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getReportedValuesOrigin(OFString &value, const signed long pos = 0) const;
 
+    /** get RequestingService (0032,1033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const;
+
     /** get RescaleIntercept (0028,1052)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -2277,6 +2375,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const;
 
+    /** get TreatmentSessionUID (300a,0700)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const;
+
+    /** get TypeOfPatientID (0010,0022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
+
     /** get VOILUTFunction (0028,1056)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -2393,6 +2505,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTAdmittingDiagnosesCodeSequence &getAdmittingDiagnosesCodeSequence() const
         { return AdmittingDiagnosesCodeSequence; }
 
+    /** get AnatomicRegionSequence (0008,2218)
+     *  @return reference to sequence element
+     */
+    DRTAnatomicRegionSequence &getAnatomicRegionSequence()
+        { return AnatomicRegionSequence; }
+
+    /** get AnatomicRegionSequence (0008,2218)
+     *  @return const reference to sequence element
+     */
+    const DRTAnatomicRegionSequence &getAnatomicRegionSequence() const
+        { return AnatomicRegionSequence; }
+
     /** get BreedRegistrationSequence (0010,2294)
      *  @return reference to sequence element
      */
@@ -2405,6 +2529,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const
         { return BreedRegistrationSequence; }
 
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return reference to sequence element
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence()
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return const reference to sequence element
+     */
+    const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
     /** get CodingSchemeIdentificationSequence (0008,0110)
      *  @return reference to sequence element
      */
@@ -2561,6 +2697,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTEncryptedAttributesSequence &getEncryptedAttributesSequence() const
         { return EncryptedAttributesSequence; }
 
+    /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1)
+     *  @return reference to sequence element
+     */
+    DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence()
+        { return EnhancedRTBeamLimitingDeviceSequence; }
+
+    /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1)
+     *  @return const reference to sequence element
+     */
+    const DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence() const
+        { return EnhancedRTBeamLimitingDeviceSequence; }
+
     /** get ExposureSequence (3002,0030)
      *  @return reference to sequence element
      */
@@ -2645,6 +2793,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTIconImageSequence &getIconImageSequence() const
         { return IconImageSequence; }
 
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return reference to sequence element
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return const reference to sequence element
+     */
+    const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
     /** get IssuerOfAccessionNumberSequence (0008,0051)
      *  @return reference to sequence element
      */
@@ -2849,6 +3009,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrimaryAnatomicStructureSequence (0008,2228)
+     *  @return reference to sequence element
+     */
+    DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence()
+        { return PrimaryAnatomicStructureSequence; }
+
+    /** get PrimaryAnatomicStructureSequence (0008,2228)
+     *  @return const reference to sequence element
+     */
+    const DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() const
+        { return PrimaryAnatomicStructureSequence; }
+
     /** get PrivateDataElementCharacteristicsSequence (0008,0300)
      *  @return reference to sequence element
      */
@@ -2897,6 +3069,30 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return reference to sequence element
+     */
+    DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence()
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return const reference to sequence element
+     */
+    const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return reference to sequence element
+     */
+    DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence()
+        { return ReferencedDefinedProtocolSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const
+        { return ReferencedDefinedProtocolSequence; }
+
     /** get ReferencedImageSequence (0008,1140)
      *  @return reference to sequence element
      */
@@ -2957,6 +3153,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const
         { return ReferencedPerformedProcedureStepSequence; }
 
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return reference to sequence element
+     */
+    DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence()
+        { return ReferencedPerformedProtocolSequence; }
+
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const
+        { return ReferencedPerformedProtocolSequence; }
+
     /** get ReferencedRTPlanSequence (300c,0002)
      *  @return reference to sequence element
      */
@@ -3160,6 +3368,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setAcquisitionDateTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set AcquisitionDuration (0018,9073)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAcquisitionDuration(const Float64 value, const unsigned long pos = 0);
+
     /** set AcquisitionNumber (0020,0012)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -3174,6 +3389,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setAcquisitionTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set AcquisitionUID (0008,0017)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setAcquisitionUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ActualFrameDuration (0018,1242)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -3223,6 +3445,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set BarcodeValue (2200,0005)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue);
+
     /** set BeamLimitingDeviceAngle (300a,0120)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -3524,6 +3753,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DeviceUID (0018,1002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set EffectiveDuration (0018,0072)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -3531,6 +3767,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setEffectiveDuration(const OFString &value, const OFBool check = OFTrue);
 
+    /** set EncapsulatedPixelDataValueTotalLength (7fe0,0003)
+     *  @param  value  value to be set (should be valid for this VR)
+     *  @param  pos    index of the value to be set (0..vm-1), vm=1
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos = 0);
+
     /** set EndCumulativeMetersetWeight (300c,0009)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -3538,6 +3781,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setEndCumulativeMetersetWeight(const OFString &value, const OFBool check = OFTrue);
 
+    /** set EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check = OFTrue);
+
     /** set EthnicGroup (0010,2160)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -3559,6 +3809,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setExposureTimeInms(const Float64 value, const unsigned long pos = 0);
 
+    /** set ExtendedOffsetTable (7fe0,0001)
+     *  @param  value  array value to be set (data is copied)
+     *  @param  count  number of items in the array
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setExtendedOffsetTable(const Uint64 *value, const unsigned long count);
+
+    /** set ExtendedOffsetTableLengths (7fe0,0002)
+     *  @param  value  array value to be set (data is copied)
+     *  @param  count  number of items in the array
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count);
+
     /** set FractionNumber (3002,0029)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -3657,6 +3921,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setImageComments(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ImageLaterality (0020,0062)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setImageLaterality(const OFString &value, const OFBool check = OFTrue);
+
     /** set ImagePlanePixelSpacing (3002,0011)
      *  @param  value  value to be set (possibly multi-valued) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (2) if enabled
@@ -3720,6 +3991,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set InstanceOriginStatus (0400,0600)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set InstitutionAddress (0008,0081)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -3825,6 +4103,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ManufacturerModelName (0008,1090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -4294,6 +4579,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setRadiationMachineSSD(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ReasonForVisit (0032,1066)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue);
+
     /** set RecognizableVisualFeatures (0028,0302)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -4357,6 +4649,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setReportedValuesOrigin(const OFString &value, const OFBool check = OFTrue);
 
+    /** set RequestingService (0032,1033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue);
+
     /** set RescaleIntercept (0028,1052)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -4714,6 +5013,20 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setTimezoneOffsetFromUTC(const OFString &value, const OFBool check = OFTrue);
 
+    /** set TreatmentSessionUID (300a,0700)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue);
+
+    /** set TypeOfPatientID (0010,0022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
+
     /** set VOILUTFunction (0028,1056)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -4786,6 +5099,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmLongString IssuerOfPatientID;
     /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
+    /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3
+    DcmCodeString TypeOfPatientID;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
     /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
@@ -4904,6 +5219,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmPersonName NameOfPhysiciansReadingStudy;
     /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3
     DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence;
+    /// RequestingService (0032,1033) vr=LO, vm=1, type=3
+    DcmLongString RequestingService;
     /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3
     DRTRequestingServiceCodeSequence RequestingServiceCodeSequence;
     /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3
@@ -4953,6 +5270,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmLongString AdmissionID;
     /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3
     DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence;
+    /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3
+    DcmUnlimitedText ReasonForVisit;
+    /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3
+    DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence;
     /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3
     DcmLongString ServiceEpisodeID;
     /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3
@@ -4968,6 +5289,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmLongString ClinicalTrialTimePointID;
     /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3
     DcmShortText ClinicalTrialTimePointDescription;
+    /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3
+    DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence;
     /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3
     DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent;
     /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C
@@ -5015,6 +5338,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence;
     /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3
     DcmShortText CommentsOnThePerformedProcedureStep;
+    /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier TreatmentSessionUID;
 
     // --- ClinicalTrialSeriesModule (U) ---
 
@@ -5044,8 +5369,12 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmShortString StationName;
     /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
     DcmLongString InstitutionalDepartmentName;
+    /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+    DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
     /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
     DcmLongString ManufacturerModelName;
+    /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier ManufacturerDeviceClassUID;
     /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
     DcmLongString DeviceSerialNumber;
     /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3
@@ -5054,6 +5383,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmLongString GantryID;
     /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
     DRTUDISequence UDISequence;
+    /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier DeviceUID;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -5063,6 +5394,25 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     /// PixelPaddingValue (0028,0120) vr=US/SS, vm=1, type=1C
     DcmUnsignedShort PixelPaddingValue;
 
+    // --- GeneralAcquisitionModule (M) ---
+
+    /// AcquisitionUID (0008,0017) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier AcquisitionUID;
+    /// AcquisitionNumber (0020,0012) vr=IS, vm=1, type=3
+    DcmIntegerString AcquisitionNumber;
+    /// AcquisitionDate (0008,0022) vr=DA, vm=1, type=3
+    DcmDate AcquisitionDate;
+    /// AcquisitionTime (0008,0032) vr=TM, vm=1, type=3
+    DcmTime AcquisitionTime;
+    /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3
+    DcmDateTime AcquisitionDateTime;
+    /// AcquisitionDuration (0018,9073) vr=FD, vm=1, type=3
+    DcmFloatingPointDouble AcquisitionDuration;
+    /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3
+    DcmIntegerString ImagesInAcquisition;
+    /// IrradiationEventUID (0008,3010) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier IrradiationEventUID;
+
     // --- GeneralImageModule (M) ---
 
     /// InstanceNumber (0020,0013) vr=IS, vm=1, type=2
@@ -5077,16 +5427,6 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     // ImageType (0008,0008) vr=CS, vm=2-n, type=3
     // - also defined in: RTImageModule
     // DcmCodeString ImageType;
-    /// AcquisitionNumber (0020,0012) vr=IS, vm=1, type=3
-    DcmIntegerString AcquisitionNumber;
-    /// AcquisitionDate (0008,0022) vr=DA, vm=1, type=3
-    DcmDate AcquisitionDate;
-    /// AcquisitionTime (0008,0032) vr=TM, vm=1, type=3
-    DcmTime AcquisitionTime;
-    /// AcquisitionDateTime (0008,002a) vr=DT, vm=1, type=3
-    DcmDateTime AcquisitionDateTime;
-    /// ImagesInAcquisition (0020,1002) vr=IS, vm=1, type=3
-    DcmIntegerString ImagesInAcquisition;
     /// ImageComments (0020,4000) vr=LT, vm=1, type=3
     DcmLongText ImageComments;
     /// QualityControlImage (0028,0300) vr=CS, vm=1, type=3
@@ -5105,10 +5445,14 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DRTIconImageSequence IconImageSequence;
     /// PresentationLUTShape (2050,0020) vr=CS, vm=1, type=3
     DcmCodeString PresentationLUTShape;
-    /// IrradiationEventUID (0008,3010) vr=UI, vm=1-n, type=3
-    DcmUniqueIdentifier IrradiationEventUID;
     /// RealWorldValueMappingSequence (0040,9096) vr=SQ, vm=1, type=3
     DRTRealWorldValueMappingSequence RealWorldValueMappingSequence;
+    /// ImageLaterality (0020,0062) vr=CS, vm=1, type=3
+    DcmCodeString ImageLaterality;
+    /// AnatomicRegionSequence (0008,2218) vr=SQ, vm=1, type=3
+    DRTAnatomicRegionSequence AnatomicRegionSequence;
+    /// PrimaryAnatomicStructureSequence (0008,2228) vr=SQ, vm=1, type=3
+    DRTPrimaryAnatomicStructureSequence PrimaryAnatomicStructureSequence;
 
     // --- GeneralReferenceModule (U) ---
 
@@ -5179,6 +5523,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmUniversalResourceIdentifierOrLocator PixelDataProviderURL;
     /// PixelPaddingRangeLimit (0028,0121) vr=US/SS, vm=1, type=1C
     DcmUnsignedShort PixelPaddingRangeLimit;
+    /// ExtendedOffsetTable (7fe0,0001) vr=OV, vm=1, type=3
+    DcmOther64bitVeryLong ExtendedOffsetTable;
+    /// ExtendedOffsetTableLengths (7fe0,0002) vr=OV, vm=1, type=1C
+    DcmOther64bitVeryLong ExtendedOffsetTableLengths;
 
     // --- ContrastBolusModule (C) ---
 
@@ -5242,6 +5590,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmAttributeTag FrameIncrementPointer;
     /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3
     DcmCodeString StereoPairsPresent;
+    /// EncapsulatedPixelDataValueTotalLength (7fe0,0003) vr=UV, vm=1, type=3
+    DcmUnsigned64bitVeryLong EncapsulatedPixelDataValueTotalLength;
 
     // --- DeviceModule (U) ---
 
@@ -5307,6 +5657,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmDecimalString RadiationMachineSSD;
     /// RTImageSID (3002,0026) vr=DS, vm=1, type=2
     DcmDecimalString RTImageSID;
+    /// EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) vr=CS, vm=1, type=3
+    DcmCodeString EnhancedRTBeamLimitingDeviceDefinitionFlag;
+    /// EnhancedRTBeamLimitingDeviceSequence (3008,00a1) vr=SQ, vm=1, type=1C
+    DRTEnhancedRTBeamLimitingDeviceSequence EnhancedRTBeamLimitingDeviceSequence;
     /// SourceToReferenceObjectDistance (3002,0028) vr=DS, vm=1, type=3
     DcmDecimalString SourceToReferenceObjectDistance;
     /// ReferencedRTPlanSequence (300c,0002) vr=SQ, vm=1, type=3
@@ -5454,6 +5808,14 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmCodeString ContentQualification;
     /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
     DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
+    /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3
+    DcmCodeString InstanceOriginStatus;
+    /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3
+    DcmLongText BarcodeValue;
+    /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C
+    DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence;
+    /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C
+    DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index 3701f2bfba902511a95f9943a0d06387ce604919..8c4ae554c5c33910e89f660f8eb76170289ceb44 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtadcs.h"   // for AdmittingDiagnosesCodeSequence
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
+#include "dcmtk/dcmrt/seq/drtcttcs.h"  // for ClinicalTrialTimePointTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
@@ -35,6 +36,7 @@
 #include "dcmtk/dcmrt/seq/drtgms.h"    // for GeneticModificationsSequence
 #include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtibs.h"    // for IonBeamSequence
 #include "dcmtk/dcmrt/seq/drtitts.h"   // for IonToleranceTableSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrvcs.h"   // for ReasonForVisitCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdps.h"   // for ReferencedDefinedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
 #include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
-#include "dcmtk/dcmrt/seq/drtrrtps3.h" // for ReferencedRTPlanSequence
+#include "dcmtk/dcmrt/seq/drtrpprs.h"  // for ReferencedPerformedProtocolSequence
+#include "dcmtk/dcmrt/seq/drtrtps2.h"  // for ReferencedRTPlanSequence
 #include "dcmtk/dcmrt/seq/drtrsers.h"  // for ReferencedSeriesSequence
 #include "dcmtk/dcmrt/seq/drtrsss.h"   // for ReferencedStructureSetSequence
 #include "dcmtk/dcmrt/seq/drtrss.h"    // for ReferencedStudySequence
@@ -76,6 +81,7 @@
 #include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
 #include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
+#include "dcmtk/dcmrt/seq/drttscs.h"   // for TreatmentSiteCodeSequence
 #include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
@@ -303,6 +309,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get BarcodeValue (2200,0005)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const;
+
     /** get ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -450,6 +463,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get DeviceUID (0018,1002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
     /** get EthnicGroup (0010,2160)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -520,6 +540,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get InstanceOriginStatus (0400,0600)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const;
+
     /** get InstitutionAddress (0008,0081)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -583,6 +610,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
 
+    /** get ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const;
+
     /** get ManufacturerModelName (0008,1090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -954,6 +988,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getRTPlanTime(OFString &value, const signed long pos = 0) const;
 
+    /** get ReasonForVisit (0032,1066)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const;
+
     /** get ReferringPhysicianName (0008,0090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -968,6 +1009,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const;
 
+    /** get RequestingService (0032,1033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const;
+
     /** get ResponsibleOrganization (0010,2299)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1220,12 +1268,26 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getTreatmentProtocols(OFString &value, const signed long pos = 0) const;
 
-    /** get TreatmentSites (300a,000b)
+    /** get TreatmentSessionUID (300a,0700)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition getTreatmentSites(OFString &value, const signed long pos = 0) const;
+    virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const;
+
+    /** get TreatmentSite (3010,0077)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTreatmentSite(OFString &value, const signed long pos = 0) const;
+
+    /** get TypeOfPatientID (0010,0022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
 
   // --- get DICOM sequence attributes ---
 
@@ -1253,6 +1315,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const
         { return BreedRegistrationSequence; }
 
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return reference to sequence element
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence()
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return const reference to sequence element
+     */
+    const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
     /** get CodingSchemeIdentificationSequence (0008,0110)
      *  @return reference to sequence element
      */
@@ -1433,6 +1507,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const
         { return HL7StructuredDocumentReferenceSequence; }
 
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return reference to sequence element
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return const reference to sequence element
+     */
+    const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
     /** get IonBeamSequence (300a,03a2)
      *  @return reference to sequence element
      */
@@ -1685,6 +1771,30 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return reference to sequence element
+     */
+    DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence()
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return const reference to sequence element
+     */
+    const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return reference to sequence element
+     */
+    DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence()
+        { return ReferencedDefinedProtocolSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const
+        { return ReferencedDefinedProtocolSequence; }
+
     /** get ReferencedDoseSequence (300c,0080)
      *  @return reference to sequence element
      */
@@ -1757,6 +1867,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const
         { return ReferencedPerformedProcedureStepSequence; }
 
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return reference to sequence element
+     */
+    DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence()
+        { return ReferencedPerformedProtocolSequence; }
+
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const
+        { return ReferencedPerformedProtocolSequence; }
+
     /** get ReferencedRTPlanSequence (300c,0002)
      *  @return reference to sequence element
      */
@@ -1925,6 +2047,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTStudiesContainingOtherReferencedInstancesSequence &getStudiesContainingOtherReferencedInstancesSequence() const
         { return StudiesContainingOtherReferencedInstancesSequence; }
 
+    /** get TreatmentSiteCodeSequence (3010,0078)
+     *  @return reference to sequence element
+     */
+    DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence()
+        { return TreatmentSiteCodeSequence; }
+
+    /** get TreatmentSiteCodeSequence (3010,0078)
+     *  @return const reference to sequence element
+     */
+    const DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() const
+        { return TreatmentSiteCodeSequence; }
+
     /** get UDISequence (0018,100a)
      *  @return reference to sequence element
      */
@@ -1988,6 +2122,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set BarcodeValue (2200,0005)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue);
+
     /** set ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2135,6 +2276,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DeviceUID (0018,1002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set EthnicGroup (0010,2160)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -2198,6 +2346,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set InstanceOriginStatus (0400,0600)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set InstitutionAddress (0008,0081)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2261,6 +2416,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ManufacturerModelName (0008,1090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2597,6 +2759,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setRTPlanTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ReasonForVisit (0032,1066)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue);
+
     /** set ReferringPhysicianName (0008,0090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -2611,6 +2780,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set RequestingService (0032,1033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue);
+
     /** set ResponsibleOrganization (0010,2299)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2849,12 +3025,26 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setTreatmentProtocols(const OFString &value, const OFBool check = OFTrue);
 
-    /** set TreatmentSites (300a,000b)
-     *  @param  value  value to be set (possibly multi-valued) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+    /** set TreatmentSessionUID (300a,0700)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue);
+
+    /** set TreatmentSite (3010,0077)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSite(const OFString &value, const OFBool check = OFTrue);
+
+    /** set TypeOfPatientID (0010,0022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition setTreatmentSites(const OFString &value, const OFBool check = OFTrue);
+    virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
 
   protected:
@@ -2886,6 +3076,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmLongString IssuerOfPatientID;
     /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
+    /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3
+    DcmCodeString TypeOfPatientID;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
     /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
@@ -3004,6 +3196,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmPersonName NameOfPhysiciansReadingStudy;
     /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3
     DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence;
+    /// RequestingService (0032,1033) vr=LO, vm=1, type=3
+    DcmLongString RequestingService;
     /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3
     DRTRequestingServiceCodeSequence RequestingServiceCodeSequence;
     /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3
@@ -3053,6 +3247,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmLongString AdmissionID;
     /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3
     DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence;
+    /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3
+    DcmUnlimitedText ReasonForVisit;
+    /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3
+    DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence;
     /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3
     DcmLongString ServiceEpisodeID;
     /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3
@@ -3068,6 +3266,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmLongString ClinicalTrialTimePointID;
     /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3
     DcmShortText ClinicalTrialTimePointDescription;
+    /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3
+    DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence;
     /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3
     DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent;
     /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C
@@ -3115,6 +3315,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence;
     /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3
     DcmShortText CommentsOnThePerformedProcedureStep;
+    /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier TreatmentSessionUID;
 
     // --- ClinicalTrialSeriesModule (U) ---
 
@@ -3144,8 +3346,12 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmShortString StationName;
     /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
     DcmLongString InstitutionalDepartmentName;
+    /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+    DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
     /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
     DcmLongString ManufacturerModelName;
+    /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier ManufacturerDeviceClassUID;
     /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
     DcmLongString DeviceSerialNumber;
     /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3
@@ -3154,6 +3360,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmLongString GantryID;
     /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
     DRTUDISequence UDISequence;
+    /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier DeviceUID;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -3182,8 +3390,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmLongString TreatmentProtocols;
     /// PlanIntent (300a,000a) vr=CS, vm=1, type=3
     DcmCodeString PlanIntent;
-    /// TreatmentSites (300a,000b) vr=LO, vm=1-n, type=3
-    DcmLongString TreatmentSites;
+    /// TreatmentSite (3010,0077) vr=LO, vm=1, type=3
+    DcmLongString TreatmentSite;
+    /// TreatmentSiteCodeSequence (3010,0078) vr=SQ, vm=1, type=3
+    DRTTreatmentSiteCodeSequence TreatmentSiteCodeSequence;
     /// RTPlanGeometry (300a,000c) vr=CS, vm=1, type=1
     DcmCodeString RTPlanGeometry;
     /// ReferencedStructureSetSequence (300c,0060) vr=SQ, vm=1, type=1C
@@ -3309,6 +3519,14 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmCodeString ContentQualification;
     /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
     DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
+    /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3
+    DcmCodeString InstanceOriginStatus;
+    /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3
+    DcmLongText BarcodeValue;
+    /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C
+    DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence;
+    /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C
+    DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index 94d280927482ec3343d1a3cabc2fe623ad27f898..388f8b36e339e709440e4be336c13fd7d008e361 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -21,6 +21,7 @@
 #include "dcmtk/dcmrt/seq/drtadcs.h"   // for AdmittingDiagnosesCodeSequence
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #include "dcmtk/dcmrt/seq/drtcdrs.h"   // for CalculatedDoseReferenceSequence
+#include "dcmtk/dcmrt/seq/drtcttcs.h"  // for ClinicalTrialTimePointTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
@@ -35,6 +36,7 @@
 #include "dcmtk/dcmrt/seq/drtgms.h"    // for GeneticModificationsSequence
 #include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrvcs.h"   // for ReasonForVisitCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdps.h"   // for ReferencedDefinedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
-#include "dcmtk/dcmrt/seq/drtrrtps4.h" // for ReferencedRTPlanSequence
+#include "dcmtk/dcmrt/seq/drtrpprs.h"  // for ReferencedPerformedProtocolSequence
+#include "dcmtk/dcmrt/seq/drtrtps3.h"  // for ReferencedRTPlanSequence
 #include "dcmtk/dcmrt/seq/drtrsers.h"  // for ReferencedSeriesSequence
 #include "dcmtk/dcmrt/seq/drtrss.h"    // for ReferencedStudySequence
-#include "dcmtk/dcmrt/seq/drtrtrs4.h"  // for ReferencedTreatmentRecordSequence
+#include "dcmtk/dcmrt/seq/drtrtrs2.h"  // for ReferencedTreatmentRecordSequence
 #include "dcmtk/dcmrt/seq/drtrpis.h"   // for ReferringPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
@@ -74,7 +79,7 @@
 #include "dcmtk/dcmrt/seq/drtscs.h"    // for StrainCodeSequence
 #include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
-#include "dcmtk/dcmrt/seq/drttms0.h"   // for TreatmentMachineSequence
+#include "dcmtk/dcmrt/seq/drttms2.h"   // for TreatmentMachineSequence
 #include "dcmtk/dcmrt/seq/drttsibs.h"  // for TreatmentSessionIonBeamSequence
 #include "dcmtk/dcmrt/seq/drttscds.h"  // for TreatmentSummaryCalculatedDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drttsmds.h"  // for TreatmentSummaryMeasuredDoseReferenceSequence
@@ -282,6 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get BarcodeValue (2200,0005)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const;
+
     /** get ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -436,6 +448,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get DeviceUID (0018,1002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
     /** get EthnicGroup (0010,2160)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -499,6 +518,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get InstanceOriginStatus (0400,0600)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const;
+
     /** get InstitutionAddress (0008,0081)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -562,6 +588,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
 
+    /** get ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const;
+
     /** get ManufacturerModelName (0008,1090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -898,6 +931,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const;
 
+    /** get ReasonForVisit (0032,1066)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const;
+
     /** get ReferencedFractionGroupNumber (300c,0022)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -926,6 +966,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const;
 
+    /** get RequestingService (0032,1033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const;
+
     /** get ResponsibleOrganization (0010,2299)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1157,6 +1204,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getTreatmentDate(OFString &value, const signed long pos = 0) const;
 
+    /** get TreatmentSessionUID (300a,0700)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const;
+
     /** get TreatmentStatusComment (3008,0202)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1171,6 +1225,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getTreatmentTime(OFString &value, const signed long pos = 0) const;
 
+    /** get TypeOfPatientID (0010,0022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
+
   // --- get DICOM sequence attributes ---
 
     /** get AdmittingDiagnosesCodeSequence (0008,1084)
@@ -1209,6 +1270,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTCalculatedDoseReferenceSequence &getCalculatedDoseReferenceSequence() const
         { return CalculatedDoseReferenceSequence; }
 
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return reference to sequence element
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence()
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return const reference to sequence element
+     */
+    const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
     /** get CodingSchemeIdentificationSequence (0008,0110)
      *  @return reference to sequence element
      */
@@ -1377,6 +1450,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const
         { return HL7StructuredDocumentReferenceSequence; }
 
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return reference to sequence element
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return const reference to sequence element
+     */
+    const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
     /** get IssuerOfAccessionNumberSequence (0008,0051)
      *  @return reference to sequence element
      */
@@ -1617,6 +1702,30 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return reference to sequence element
+     */
+    DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence()
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return const reference to sequence element
+     */
+    const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return reference to sequence element
+     */
+    DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence()
+        { return ReferencedDefinedProtocolSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const
+        { return ReferencedDefinedProtocolSequence; }
+
     /** get ReferencedImageSequence (0008,1140)
      *  @return reference to sequence element
      */
@@ -1677,6 +1786,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const
         { return ReferencedPerformedProcedureStepSequence; }
 
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return reference to sequence element
+     */
+    DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence()
+        { return ReferencedPerformedProtocolSequence; }
+
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const
+        { return ReferencedPerformedProtocolSequence; }
+
     /** get ReferencedRTPlanSequence (300c,0002)
      *  @return reference to sequence element
      */
@@ -1949,6 +2070,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set BarcodeValue (2200,0005)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue);
+
     /** set ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2103,6 +2231,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DeviceUID (0018,1002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set EthnicGroup (0010,2160)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -2159,6 +2294,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set InstanceOriginStatus (0400,0600)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set InstitutionAddress (0008,0081)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2222,6 +2364,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ManufacturerModelName (0008,1090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2516,6 +2665,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ReasonForVisit (0032,1066)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue);
+
     /** set ReferencedFractionGroupNumber (300c,0022)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -2537,6 +2693,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set RequestingService (0032,1033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue);
+
     /** set ResponsibleOrganization (0010,2299)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2754,6 +2917,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setTreatmentDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set TreatmentSessionUID (300a,0700)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set TreatmentStatusComment (3008,0202)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2768,6 +2938,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setTreatmentTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set TypeOfPatientID (0010,0022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
+
 
   protected:
 
@@ -2798,6 +2975,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmLongString IssuerOfPatientID;
     /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
+    /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3
+    DcmCodeString TypeOfPatientID;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
     /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
@@ -2916,6 +3095,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmPersonName NameOfPhysiciansReadingStudy;
     /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3
     DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence;
+    /// RequestingService (0032,1033) vr=LO, vm=1, type=3
+    DcmLongString RequestingService;
     /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3
     DRTRequestingServiceCodeSequence RequestingServiceCodeSequence;
     /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3
@@ -2931,6 +3112,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmLongString ClinicalTrialTimePointID;
     /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3
     DcmShortText ClinicalTrialTimePointDescription;
+    /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3
+    DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence;
     /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3
     DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent;
     /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C
@@ -2978,6 +3161,10 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmLongString AdmissionID;
     /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3
     DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence;
+    /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3
+    DcmUnlimitedText ReasonForVisit;
+    /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3
+    DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence;
     /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3
     DcmLongString ServiceEpisodeID;
     /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3
@@ -3027,6 +3214,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence;
     /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3
     DcmShortText CommentsOnThePerformedProcedureStep;
+    /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier TreatmentSessionUID;
 
     // --- ClinicalTrialSeriesModule (U) ---
 
@@ -3049,8 +3238,12 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmShortString StationName;
     /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
     DcmLongString InstitutionalDepartmentName;
+    /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+    DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
     /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
     DcmLongString ManufacturerModelName;
+    /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier ManufacturerDeviceClassUID;
     /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
     DcmLongString DeviceSerialNumber;
     /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3
@@ -3059,6 +3252,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmLongString GantryID;
     /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
     DRTUDISequence UDISequence;
+    /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier DeviceUID;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -3206,6 +3401,14 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmCodeString ContentQualification;
     /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
     DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
+    /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3
+    DcmCodeString InstanceOriginStatus;
+    /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3
+    DcmLongText BarcodeValue;
+    /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C
+    DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence;
+    /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C
+    DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index 58a8d776937b90bfe182dd74a57160a24f6dd9d8..602176322737ec7c2bbfaad564cd7ff9605d4493 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtass.h"    // for ApplicationSetupSequence
 #include "dcmtk/dcmrt/seq/drtbs.h"     // for BeamSequence
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
+#include "dcmtk/dcmrt/seq/drtcttcs.h"  // for ClinicalTrialTimePointTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
@@ -37,6 +38,7 @@
 #include "dcmtk/dcmrt/seq/drtgms.h"    // for GeneticModificationsSequence
 #include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrvcs.h"   // for ReasonForVisitCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdps.h"   // for ReferencedDefinedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
 #include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
-#include "dcmtk/dcmrt/seq/drtrrtps3.h" // for ReferencedRTPlanSequence
+#include "dcmtk/dcmrt/seq/drtrpprs.h"  // for ReferencedPerformedProtocolSequence
+#include "dcmtk/dcmrt/seq/drtrtps2.h"  // for ReferencedRTPlanSequence
 #include "dcmtk/dcmrt/seq/drtrsers.h"  // for ReferencedSeriesSequence
 #include "dcmtk/dcmrt/seq/drtrsss.h"   // for ReferencedStructureSetSequence
 #include "dcmtk/dcmrt/seq/drtrss.h"    // for ReferencedStudySequence
@@ -78,7 +83,8 @@
 #include "dcmtk/dcmrt/seq/drtsss.h"    // for StrainStockSequence
 #include "dcmtk/dcmrt/seq/drtscris.h"  // for StudiesContainingOtherReferencedInstancesSequence
 #include "dcmtk/dcmrt/seq/drttts.h"    // for ToleranceTableSequence
-#include "dcmtk/dcmrt/seq/drttms9.h"   // for TreatmentMachineSequence
+#include "dcmtk/dcmrt/seq/drttms1.h"   // for TreatmentMachineSequence
+#include "dcmtk/dcmrt/seq/drttscs.h"   // for TreatmentSiteCodeSequence
 #include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
@@ -322,6 +328,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get BarcodeValue (2200,0005)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const;
+
     /** get BrachyTreatmentTechnique (300a,0200)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -483,6 +496,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get DeviceUID (0018,1002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
     /** get EthnicGroup (0010,2160)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -553,6 +573,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get InstanceOriginStatus (0400,0600)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const;
+
     /** get InstitutionAddress (0008,0081)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -616,6 +643,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
 
+    /** get ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const;
+
     /** get ManufacturerModelName (0008,1090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -987,6 +1021,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getRTPlanTime(OFString &value, const signed long pos = 0) const;
 
+    /** get ReasonForVisit (0032,1066)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const;
+
     /** get ReferringPhysicianName (0008,0090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1001,6 +1042,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const;
 
+    /** get RequestingService (0032,1033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const;
+
     /** get ResponsibleOrganization (0010,2299)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1253,12 +1301,26 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getTreatmentProtocols(OFString &value, const signed long pos = 0) const;
 
-    /** get TreatmentSites (300a,000b)
+    /** get TreatmentSessionUID (300a,0700)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition getTreatmentSites(OFString &value, const signed long pos = 0) const;
+    virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const;
+
+    /** get TreatmentSite (3010,0077)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTreatmentSite(OFString &value, const signed long pos = 0) const;
+
+    /** get TypeOfPatientID (0010,0022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
 
   // --- get DICOM sequence attributes ---
 
@@ -1310,6 +1372,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const
         { return BreedRegistrationSequence; }
 
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return reference to sequence element
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence()
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return const reference to sequence element
+     */
+    const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
     /** get CodingSchemeIdentificationSequence (0008,0110)
      *  @return reference to sequence element
      */
@@ -1490,6 +1564,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const
         { return HL7StructuredDocumentReferenceSequence; }
 
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return reference to sequence element
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return const reference to sequence element
+     */
+    const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
     /** get IssuerOfAccessionNumberSequence (0008,0051)
      *  @return reference to sequence element
      */
@@ -1718,6 +1804,30 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return reference to sequence element
+     */
+    DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence()
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return const reference to sequence element
+     */
+    const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return reference to sequence element
+     */
+    DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence()
+        { return ReferencedDefinedProtocolSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const
+        { return ReferencedDefinedProtocolSequence; }
+
     /** get ReferencedDoseSequence (300c,0080)
      *  @return reference to sequence element
      */
@@ -1790,6 +1900,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const
         { return ReferencedPerformedProcedureStepSequence; }
 
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return reference to sequence element
+     */
+    DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence()
+        { return ReferencedPerformedProtocolSequence; }
+
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const
+        { return ReferencedPerformedProtocolSequence; }
+
     /** get ReferencedRTPlanSequence (300c,0002)
      *  @return reference to sequence element
      */
@@ -1994,6 +2116,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &getTreatmentMachineSequence() const
         { return TreatmentMachineSequence; }
 
+    /** get TreatmentSiteCodeSequence (3010,0078)
+     *  @return reference to sequence element
+     */
+    DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence()
+        { return TreatmentSiteCodeSequence; }
+
+    /** get TreatmentSiteCodeSequence (3010,0078)
+     *  @return const reference to sequence element
+     */
+    const DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() const
+        { return TreatmentSiteCodeSequence; }
+
     /** get UDISequence (0018,100a)
      *  @return reference to sequence element
      */
@@ -2057,6 +2191,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set BarcodeValue (2200,0005)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue);
+
     /** set BrachyTreatmentTechnique (300a,0200)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -2218,6 +2359,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DeviceUID (0018,1002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set EthnicGroup (0010,2160)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -2281,6 +2429,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set InstanceOriginStatus (0400,0600)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set InstitutionAddress (0008,0081)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2344,6 +2499,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ManufacturerModelName (0008,1090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2680,6 +2842,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setRTPlanTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ReasonForVisit (0032,1066)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue);
+
     /** set ReferringPhysicianName (0008,0090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -2694,6 +2863,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set RequestingService (0032,1033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue);
+
     /** set ResponsibleOrganization (0010,2299)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2932,12 +3108,26 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setTreatmentProtocols(const OFString &value, const OFBool check = OFTrue);
 
-    /** set TreatmentSites (300a,000b)
-     *  @param  value  value to be set (possibly multi-valued) or "" for no value
-     *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+    /** set TreatmentSessionUID (300a,0700)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue);
+
+    /** set TreatmentSite (3010,0077)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSite(const OFString &value, const OFBool check = OFTrue);
+
+    /** set TypeOfPatientID (0010,0022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition setTreatmentSites(const OFString &value, const OFBool check = OFTrue);
+    virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
 
 
   protected:
@@ -2969,6 +3159,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmLongString IssuerOfPatientID;
     /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
+    /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3
+    DcmCodeString TypeOfPatientID;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
     /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
@@ -3087,6 +3279,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmPersonName NameOfPhysiciansReadingStudy;
     /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3
     DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence;
+    /// RequestingService (0032,1033) vr=LO, vm=1, type=3
+    DcmLongString RequestingService;
     /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3
     DRTRequestingServiceCodeSequence RequestingServiceCodeSequence;
     /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3
@@ -3136,6 +3330,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmLongString AdmissionID;
     /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3
     DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence;
+    /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3
+    DcmUnlimitedText ReasonForVisit;
+    /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3
+    DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence;
     /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3
     DcmLongString ServiceEpisodeID;
     /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3
@@ -3151,6 +3349,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmLongString ClinicalTrialTimePointID;
     /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3
     DcmShortText ClinicalTrialTimePointDescription;
+    /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3
+    DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence;
     /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3
     DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent;
     /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C
@@ -3198,6 +3398,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence;
     /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3
     DcmShortText CommentsOnThePerformedProcedureStep;
+    /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier TreatmentSessionUID;
 
     // --- ClinicalTrialSeriesModule (U) ---
 
@@ -3227,8 +3429,12 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmShortString StationName;
     /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
     DcmLongString InstitutionalDepartmentName;
+    /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+    DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
     /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
     DcmLongString ManufacturerModelName;
+    /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier ManufacturerDeviceClassUID;
     /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
     DcmLongString DeviceSerialNumber;
     /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3
@@ -3237,6 +3443,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmLongString GantryID;
     /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
     DRTUDISequence UDISequence;
+    /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier DeviceUID;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -3265,8 +3473,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmLongString TreatmentProtocols;
     /// PlanIntent (300a,000a) vr=CS, vm=1, type=3
     DcmCodeString PlanIntent;
-    /// TreatmentSites (300a,000b) vr=LO, vm=1-n, type=3
-    DcmLongString TreatmentSites;
+    /// TreatmentSite (3010,0077) vr=LO, vm=1, type=3
+    DcmLongString TreatmentSite;
+    /// TreatmentSiteCodeSequence (3010,0078) vr=SQ, vm=1, type=3
+    DRTTreatmentSiteCodeSequence TreatmentSiteCodeSequence;
     /// RTPlanGeometry (300a,000c) vr=CS, vm=1, type=1
     DcmCodeString RTPlanGeometry;
     /// ReferencedStructureSetSequence (300c,0060) vr=SQ, vm=1, type=1C
@@ -3405,6 +3615,14 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmCodeString ContentQualification;
     /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
     DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
+    /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3
+    DcmCodeString InstanceOriginStatus;
+    /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3
+    DcmLongText BarcodeValue;
+    /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C
+    DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence;
+    /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C
+    DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index b570a93773a74cf38fb6683953e28edcf1706ade..0d68d662abb5efce1aa9c32a94c67cd4ad543b04 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtadcs.h"   // for AdmittingDiagnosesCodeSequence
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
+#include "dcmtk/dcmrt/seq/drtcttcs.h"  // for ClinicalTrialTimePointTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
@@ -33,6 +34,7 @@
 #include "dcmtk/dcmrt/seq/drtgms.h"    // for GeneticModificationsSequence
 #include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtrcs.h"    // for ROIContourSequence
 #include "dcmtk/dcmrt/seq/drtrros.h"   // for RTROIObservationsSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrvcs.h"   // for ReasonForVisitCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdps.h"   // for ReferencedDefinedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtrfors.h"  // for ReferencedFrameOfReferenceSequence
 #include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
+#include "dcmtk/dcmrt/seq/drtrpprs.h"  // for ReferencedPerformedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtrsers.h"  // for ReferencedSeriesSequence
 #include "dcmtk/dcmrt/seq/drtrss.h"    // for ReferencedStudySequence
 #include "dcmtk/dcmrt/seq/drtrpis.h"   // for ReferringPhysicianIdentificationSequence
@@ -268,6 +273,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get BarcodeValue (2200,0005)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const;
+
     /** get ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -415,6 +427,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get DeviceUID (0018,1002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
     /** get EthnicGroup (0010,2160)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -478,6 +497,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get InstanceOriginStatus (0400,0600)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const;
+
     /** get InstitutionAddress (0008,0081)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -541,6 +567,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
 
+    /** get ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const;
+
     /** get ManufacturerModelName (0008,1090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -856,6 +889,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const;
 
+    /** get ReasonForVisit (0032,1066)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const;
+
     /** get ReferringPhysicianName (0008,0090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -870,6 +910,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const;
 
+    /** get RequestingService (0032,1033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const;
+
     /** get ResponsibleOrganization (0010,2299)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1150,6 +1197,20 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getTimezoneOffsetFromUTC(OFString &value, const signed long pos = 0) const;
 
+    /** get TreatmentSessionUID (300a,0700)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const;
+
+    /** get TypeOfPatientID (0010,0022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
+
   // --- get DICOM sequence attributes ---
 
     /** get AdmittingDiagnosesCodeSequence (0008,1084)
@@ -1176,6 +1237,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const
         { return BreedRegistrationSequence; }
 
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return reference to sequence element
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence()
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return const reference to sequence element
+     */
+    const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
     /** get CodingSchemeIdentificationSequence (0008,0110)
      *  @return reference to sequence element
      */
@@ -1332,6 +1405,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const
         { return HL7StructuredDocumentReferenceSequence; }
 
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return reference to sequence element
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return const reference to sequence element
+     */
+    const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
     /** get IssuerOfAccessionNumberSequence (0008,0051)
      *  @return reference to sequence element
      */
@@ -1584,6 +1669,30 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return reference to sequence element
+     */
+    DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence()
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return const reference to sequence element
+     */
+    const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return reference to sequence element
+     */
+    DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence()
+        { return ReferencedDefinedProtocolSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const
+        { return ReferencedDefinedProtocolSequence; }
+
     /** get ReferencedFrameOfReferenceSequence (3006,0010)
      *  @return reference to sequence element
      */
@@ -1656,6 +1765,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const
         { return ReferencedPerformedProcedureStepSequence; }
 
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return reference to sequence element
+     */
+    DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence()
+        { return ReferencedPerformedProtocolSequence; }
+
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const
+        { return ReferencedPerformedProtocolSequence; }
+
     /** get ReferencedSeriesSequence (0008,1115)
      *  @return reference to sequence element
      */
@@ -1875,6 +1996,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set BarcodeValue (2200,0005)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue);
+
     /** set ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2022,6 +2150,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DeviceUID (0018,1002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set EthnicGroup (0010,2160)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -2078,6 +2213,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set InstanceOriginStatus (0400,0600)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set InstitutionAddress (0008,0081)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2141,6 +2283,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ManufacturerModelName (0008,1090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2421,6 +2570,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ReasonForVisit (0032,1066)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue);
+
     /** set ReferringPhysicianName (0008,0090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -2435,6 +2591,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set RequestingService (0032,1033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue);
+
     /** set ResponsibleOrganization (0010,2299)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2701,6 +2864,20 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setTimezoneOffsetFromUTC(const OFString &value, const OFBool check = OFTrue);
 
+    /** set TreatmentSessionUID (300a,0700)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue);
+
+    /** set TypeOfPatientID (0010,0022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
+
 
   protected:
 
@@ -2731,6 +2908,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmLongString IssuerOfPatientID;
     /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
+    /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3
+    DcmCodeString TypeOfPatientID;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
     /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
@@ -2849,6 +3028,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmPersonName NameOfPhysiciansReadingStudy;
     /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3
     DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence;
+    /// RequestingService (0032,1033) vr=LO, vm=1, type=3
+    DcmLongString RequestingService;
     /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3
     DRTRequestingServiceCodeSequence RequestingServiceCodeSequence;
     /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3
@@ -2898,6 +3079,10 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmLongString AdmissionID;
     /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3
     DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence;
+    /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3
+    DcmUnlimitedText ReasonForVisit;
+    /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3
+    DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence;
     /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3
     DcmLongString ServiceEpisodeID;
     /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3
@@ -2913,6 +3098,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmLongString ClinicalTrialTimePointID;
     /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3
     DcmShortText ClinicalTrialTimePointDescription;
+    /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3
+    DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence;
     /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3
     DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent;
     /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C
@@ -2960,6 +3147,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence;
     /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3
     DcmShortText CommentsOnThePerformedProcedureStep;
+    /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier TreatmentSessionUID;
 
     // --- ClinicalTrialSeriesModule (U) ---
 
@@ -2982,8 +3171,12 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmShortString StationName;
     /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
     DcmLongString InstitutionalDepartmentName;
+    /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+    DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
     /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
     DcmLongString ManufacturerModelName;
+    /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier ManufacturerDeviceClassUID;
     /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
     DcmLongString DeviceSerialNumber;
     /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3
@@ -2992,6 +3185,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmLongString GantryID;
     /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
     DRTUDISequence UDISequence;
+    /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier DeviceUID;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -3127,6 +3322,14 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmCodeString ContentQualification;
     /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
     DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
+    /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3
+    DcmCodeString InstanceOriginStatus;
+    /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3
+    DcmLongText BarcodeValue;
+    /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C
+    DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence;
+    /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C
+    DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index 0d59952df3dd2c19d537ca1290ba14d1fcc18c10..91fc2159739d615daa945b8b8799db23e53c7b6c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtadcs.h"   // for AdmittingDiagnosesCodeSequence
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
+#include "dcmtk/dcmrt/seq/drtcttcs.h"  // for ClinicalTrialTimePointTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtcsis.h"   // for CodingSchemeIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtcctus.h"  // for ConsentForClinicalTrialUseSequence
 #include "dcmtk/dcmrt/seq/drtcpis.h"   // for ConsultingPhysicianIdentificationSequence
@@ -34,6 +35,7 @@
 #include "dcmtk/dcmrt/seq/drtgms.h"    // for GeneticModificationsSequence
 #include "dcmtk/dcmrt/seq/drtgpis.h"   // for GroupOfPatientsIdentificationSequence
 #include "dcmtk/dcmrt/seq/drthsdrs.h"  // for HL7StructuredDocumentReferenceSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtians.h"   // for IssuerOfAccessionNumberSequence
 #include "dcmtk/dcmrt/seq/drtiais.h"   // for IssuerOfAdmissionIDSequence
 #include "dcmtk/dcmrt/seq/drtipiqs.h"  // for IssuerOfPatientIDQualifiersSequence
 #include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
+#include "dcmtk/dcmrt/seq/drtrvcs.h"   // for ReasonForVisitCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdps.h"   // for ReferencedDefinedProtocolSequence
 #include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
 #include "dcmtk/dcmrt/seq/drtris.h"    // for ReferencedInstanceSequence
 #include "dcmtk/dcmrt/seq/drtrpphs.h"  // for ReferencedPatientPhotoSequence
 #include "dcmtk/dcmrt/seq/drtrps.h"    // for ReferencedPatientSequence
 #include "dcmtk/dcmrt/seq/drtrppss.h"  // for ReferencedPerformedProcedureStepSequence
-#include "dcmtk/dcmrt/seq/drtrrtps4.h" // for ReferencedRTPlanSequence
+#include "dcmtk/dcmrt/seq/drtrpprs.h"  // for ReferencedPerformedProtocolSequence
+#include "dcmtk/dcmrt/seq/drtrtps3.h"  // for ReferencedRTPlanSequence
 #include "dcmtk/dcmrt/seq/drtrsers.h"  // for ReferencedSeriesSequence
 #include "dcmtk/dcmrt/seq/drtrss.h"    // for ReferencedStudySequence
-#include "dcmtk/dcmrt/seq/drtrtrs4.h"  // for ReferencedTreatmentRecordSequence
+#include "dcmtk/dcmrt/seq/drtrtrs2.h"  // for ReferencedTreatmentRecordSequence
 #include "dcmtk/dcmrt/seq/drtrpis.h"   // for ReferringPhysicianIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtras.h"    // for RequestAttributesSequence
 #include "dcmtk/dcmrt/seq/drtrscs.h"   // for RequestingServiceCodeSequence
@@ -245,6 +250,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getAuthorizationEquipmentCertificationNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get BarcodeValue (2200,0005)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getBarcodeValue(OFString &value, const signed long pos = 0) const;
+
     /** get ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -399,6 +411,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+    /** get DeviceUID (0018,1002)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
     /** get EthnicGroup (0010,2160)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -462,6 +481,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getInstanceNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+    /** get InstanceOriginStatus (0400,0600)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getInstanceOriginStatus(OFString &value, const signed long pos = 0) const;
+
     /** get InstitutionAddress (0008,0081)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -525,6 +551,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
 
+    /** get ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getManufacturerDeviceClassUID(OFString &value, const signed long pos = 0) const;
+
     /** get ManufacturerModelName (0008,1090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -840,6 +873,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getQueryRetrieveView(OFString &value, const signed long pos = 0) const;
 
+    /** get ReasonForVisit (0032,1066)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getReasonForVisit(OFString &value, const signed long pos = 0) const;
+
     /** get ReferringPhysicianName (0008,0090)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -854,6 +894,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getRelatedGeneralSOPClassUID(OFString &value, const signed long pos = 0) const;
 
+    /** get RequestingService (0032,1033)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getRequestingService(OFString &value, const signed long pos = 0) const;
+
     /** get ResponsibleOrganization (0010,2299)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1085,6 +1132,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getTreatmentDate(OFString &value, const signed long pos = 0) const;
 
+    /** get TreatmentSessionUID (300a,0700)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTreatmentSessionUID(OFString &value, const signed long pos = 0) const;
+
     /** get TreatmentStatusComment (3008,0202)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1099,6 +1153,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getTreatmentTime(OFString &value, const signed long pos = 0) const;
 
+    /** get TypeOfPatientID (0010,0022)
+     *  @param  value  reference to variable in which the value should be stored
+     *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getTypeOfPatientID(OFString &value, const signed long pos = 0) const;
+
   // --- get DICOM sequence attributes ---
 
     /** get AdmittingDiagnosesCodeSequence (0008,1084)
@@ -1125,6 +1186,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTBreedRegistrationSequence &getBreedRegistrationSequence() const
         { return BreedRegistrationSequence; }
 
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return reference to sequence element
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence()
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
+    /** get ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+     *  @return const reference to sequence element
+     */
+    const DRTClinicalTrialTimePointTypeCodeSequence &getClinicalTrialTimePointTypeCodeSequence() const
+        { return ClinicalTrialTimePointTypeCodeSequence; }
+
     /** get CodingSchemeIdentificationSequence (0008,0110)
      *  @return reference to sequence element
      */
@@ -1293,6 +1366,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTHL7StructuredDocumentReferenceSequence &getHL7StructuredDocumentReferenceSequence() const
         { return HL7StructuredDocumentReferenceSequence; }
 
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return reference to sequence element
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
+    /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+     *  @return const reference to sequence element
+     */
+    const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+        { return InstitutionalDepartmentTypeCodeSequence; }
+
     /** get IssuerOfAccessionNumberSequence (0008,0051)
      *  @return reference to sequence element
      */
@@ -1509,6 +1594,30 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTReasonForPerformedProcedureCodeSequence &getReasonForPerformedProcedureCodeSequence() const
         { return ReasonForPerformedProcedureCodeSequence; }
 
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return reference to sequence element
+     */
+    DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence()
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReasonForVisitCodeSequence (0032,1067)
+     *  @return const reference to sequence element
+     */
+    const DRTReasonForVisitCodeSequence &getReasonForVisitCodeSequence() const
+        { return ReasonForVisitCodeSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return reference to sequence element
+     */
+    DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence()
+        { return ReferencedDefinedProtocolSequence; }
+
+    /** get ReferencedDefinedProtocolSequence (0018,990c)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedDefinedProtocolSequence &getReferencedDefinedProtocolSequence() const
+        { return ReferencedDefinedProtocolSequence; }
+
     /** get ReferencedImageSequence (0008,1140)
      *  @return reference to sequence element
      */
@@ -1569,6 +1678,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTReferencedPerformedProcedureStepSequence &getReferencedPerformedProcedureStepSequence() const
         { return ReferencedPerformedProcedureStepSequence; }
 
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return reference to sequence element
+     */
+    DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence()
+        { return ReferencedPerformedProtocolSequence; }
+
+    /** get ReferencedPerformedProtocolSequence (0018,990d)
+     *  @return const reference to sequence element
+     */
+    const DRTReferencedPerformedProtocolSequence &getReferencedPerformedProtocolSequence() const
+        { return ReferencedPerformedProtocolSequence; }
+
     /** get ReferencedRTPlanSequence (300c,0002)
      *  @return reference to sequence element
      */
@@ -1817,6 +1938,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setAuthorizationEquipmentCertificationNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set BarcodeValue (2200,0005)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setBarcodeValue(const OFString &value, const OFBool check = OFTrue);
+
     /** set ClinicalTrialCoordinatingCenterName (0012,0060)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -1971,6 +2099,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set DeviceUID (0018,1002)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set EthnicGroup (0010,2160)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -2027,6 +2162,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setInstanceNumber(const OFString &value, const OFBool check = OFTrue);
 
+    /** set InstanceOriginStatus (0400,0600)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setInstanceOriginStatus(const OFString &value, const OFBool check = OFTrue);
+
     /** set InstitutionAddress (0008,0081)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2090,6 +2232,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ManufacturerDeviceClassUID (0018,100b)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setManufacturerDeviceClassUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set ManufacturerModelName (0008,1090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2370,6 +2519,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setQueryRetrieveView(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ReasonForVisit (0032,1066)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setReasonForVisit(const OFString &value, const OFBool check = OFTrue);
+
     /** set ReferringPhysicianName (0008,0090)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -2384,6 +2540,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setRelatedGeneralSOPClassUID(const OFString &value, const OFBool check = OFTrue);
 
+    /** set RequestingService (0032,1033)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setRequestingService(const OFString &value, const OFBool check = OFTrue);
+
     /** set ResponsibleOrganization (0010,2299)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
@@ -2601,6 +2764,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setTreatmentDate(const OFString &value, const OFBool check = OFTrue);
 
+    /** set TreatmentSessionUID (300a,0700)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTreatmentSessionUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set TreatmentStatusComment (3008,0202)
      *  @param  value  value to be set (single value only) or "" for no value
      *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -2615,6 +2785,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setTreatmentTime(const OFString &value, const OFBool check = OFTrue);
 
+    /** set TypeOfPatientID (0010,0022)
+     *  @param  value  value to be set (single value only) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setTypeOfPatientID(const OFString &value, const OFBool check = OFTrue);
+
 
   protected:
 
@@ -2645,6 +2822,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmLongString IssuerOfPatientID;
     /// IssuerOfPatientIDQualifiersSequence (0010,0024) vr=SQ, vm=1, type=3
     DRTIssuerOfPatientIDQualifiersSequence IssuerOfPatientIDQualifiersSequence;
+    /// TypeOfPatientID (0010,0022) vr=CS, vm=1, type=3
+    DcmCodeString TypeOfPatientID;
     /// PatientBirthDate (0010,0030) vr=DA, vm=1, type=2
     DcmDate PatientBirthDate;
     /// PatientBirthDateInAlternativeCalendar (0010,0033) vr=LO, vm=1, type=3
@@ -2763,6 +2942,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmPersonName NameOfPhysiciansReadingStudy;
     /// PhysiciansReadingStudyIdentificationSequence (0008,1062) vr=SQ, vm=1, type=3
     DRTPhysiciansReadingStudyIdentificationSequence PhysiciansReadingStudyIdentificationSequence;
+    /// RequestingService (0032,1033) vr=LO, vm=1, type=3
+    DcmLongString RequestingService;
     /// RequestingServiceCodeSequence (0032,1034) vr=SQ, vm=1, type=3
     DRTRequestingServiceCodeSequence RequestingServiceCodeSequence;
     /// ReferencedStudySequence (0008,1110) vr=SQ, vm=1, type=3
@@ -2812,6 +2993,10 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmLongString AdmissionID;
     /// IssuerOfAdmissionIDSequence (0038,0014) vr=SQ, vm=1, type=3
     DRTIssuerOfAdmissionIDSequence IssuerOfAdmissionIDSequence;
+    /// ReasonForVisit (0032,1066) vr=UT, vm=1, type=3
+    DcmUnlimitedText ReasonForVisit;
+    /// ReasonForVisitCodeSequence (0032,1067) vr=SQ, vm=1, type=3
+    DRTReasonForVisitCodeSequence ReasonForVisitCodeSequence;
     /// ServiceEpisodeID (0038,0060) vr=LO, vm=1, type=3
     DcmLongString ServiceEpisodeID;
     /// IssuerOfServiceEpisodeIDSequence (0038,0064) vr=SQ, vm=1, type=3
@@ -2827,6 +3012,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmLongString ClinicalTrialTimePointID;
     /// ClinicalTrialTimePointDescription (0012,0051) vr=ST, vm=1, type=3
     DcmShortText ClinicalTrialTimePointDescription;
+    /// ClinicalTrialTimePointTypeCodeSequence (0012,0054) vr=SQ, vm=1, type=3
+    DRTClinicalTrialTimePointTypeCodeSequence ClinicalTrialTimePointTypeCodeSequence;
     /// LongitudinalTemporalOffsetFromEvent (0012,0052) vr=FD, vm=1, type=3
     DcmFloatingPointDouble LongitudinalTemporalOffsetFromEvent;
     /// LongitudinalTemporalEventType (0012,0053) vr=CS, vm=1, type=1C
@@ -2874,6 +3061,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DRTPerformedProtocolCodeSequence PerformedProtocolCodeSequence;
     /// CommentsOnThePerformedProcedureStep (0040,0280) vr=ST, vm=1, type=3
     DcmShortText CommentsOnThePerformedProcedureStep;
+    /// TreatmentSessionUID (300a,0700) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier TreatmentSessionUID;
 
     // --- ClinicalTrialSeriesModule (U) ---
 
@@ -2896,8 +3085,12 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmShortString StationName;
     /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
     DcmLongString InstitutionalDepartmentName;
+    /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+    DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
     /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
     DcmLongString ManufacturerModelName;
+    /// ManufacturerDeviceClassUID (0018,100b) vr=UI, vm=1-n, type=3
+    DcmUniqueIdentifier ManufacturerDeviceClassUID;
     /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
     DcmLongString DeviceSerialNumber;
     /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=3
@@ -2906,6 +3099,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmLongString GantryID;
     /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
     DRTUDISequence UDISequence;
+    /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+    DcmUniqueIdentifier DeviceUID;
     /// SpatialResolution (0018,1050) vr=DS, vm=1, type=3
     DcmDecimalString SpatialResolution;
     /// DateOfLastCalibration (0018,1200) vr=DA, vm=1-n, type=3
@@ -3022,6 +3217,14 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmCodeString ContentQualification;
     /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
     DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
+    /// InstanceOriginStatus (0400,0600) vr=CS, vm=1, type=3
+    DcmCodeString InstanceOriginStatus;
+    /// BarcodeValue (2200,0005) vr=LT, vm=1, type=3
+    DcmLongText BarcodeValue;
+    /// ReferencedDefinedProtocolSequence (0018,990c) vr=SQ, vm=1, type=1C
+    DRTReferencedDefinedProtocolSequence ReferencedDefinedProtocolSequence;
+    /// ReferencedPerformedProtocolSequence (0018,990d) vr=SQ, vm=1, type=1C
+    DRTReferencedPerformedProtocolSequence ReferencedPerformedProtocolSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
index a0f8032329f39c295468820e5a85c34a87b19dc5..577a7aa1ce906da27062d321f432ff7259594503 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index d7c7f491477a998c15a021c3633f4dc875efb996..fa91b46613004c66f8ca7e49c5c24d0ebe3e4026 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5b103a5ae2846be5ffffd253c9716d68b1001793..eafc557374b08125ac5e30a7022c9813822d19c9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtafcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtafcs.h
new file mode 100644 (file)
index 0000000..df1fb04
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTAlgorithmFamilyCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTAFCS_H
+#define DRTAFCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for AlgorithmFamilyCodeSequence (0066,002f)
+ */
+class DCMTK_DCMRT_EXPORT DRTAlgorithmFamilyCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTAlgorithmFamilyCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTAlgorithmFamilyCodeSequence(const DRTAlgorithmFamilyCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTAlgorithmFamilyCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTAlgorithmFamilyCodeSequence &operator=(const DRTAlgorithmFamilyCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 08bc745df3f66eeac6941b45710385249aa2c6a5..46b305ee945e859af8ca26c5968a7ad06f88a8a6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningFacilitySequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 8562cac00c2ebea7c2deca3706d2f6354f00dbee..f24d732a6635729f771e3efacfed2c6f8ab158fc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorGeometrySequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 21c450ce3fc6a1893bcf732a6470e46f7958d450..6525c8a8964aa1606b9cab1259d8a2a8bab6cb9f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtancs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtancs.h
new file mode 100644 (file)
index 0000000..1b2c914
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTAlgorithmNameCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTANCS_H
+#define DRTANCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for AlgorithmNameCodeSequence (0066,0030)
+ */
+class DCMTK_DCMRT_EXPORT DRTAlgorithmNameCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTAlgorithmNameCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTAlgorithmNameCodeSequence(const DRTAlgorithmNameCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTAlgorithmNameCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTAlgorithmNameCodeSequence &operator=(const DRTAlgorithmNameCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtarms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtarms.h
new file mode 100644 (file)
index 0000000..a9b7af1
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTAnatomicRegionModifierSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTARMS_H
+#define DRTARMS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for AnatomicRegionModifierSequence (0008,2220)
+ */
+class DCMTK_DCMRT_EXPORT DRTAnatomicRegionModifierSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTAnatomicRegionModifierSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTAnatomicRegionModifierSequence(const DRTAnatomicRegionModifierSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTAnatomicRegionModifierSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTAnatomicRegionModifierSequence &operator=(const DRTAnatomicRegionModifierSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtars.h b/dcmrt/include/dcmtk/dcmrt/seq/drtars.h
new file mode 100644 (file)
index 0000000..2e5194e
--- /dev/null
@@ -0,0 +1,560 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTAnatomicRegionSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTARS_H
+#define DRTARS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtarms.h"   // for AnatomicRegionModifierSequence
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for AnatomicRegionSequence (0008,2218)
+ */
+class DCMTK_DCMRT_EXPORT DRTAnatomicRegionSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get AnatomicRegionModifierSequence (0008,2220)
+         *  @return reference to sequence element
+         */
+        DRTAnatomicRegionModifierSequence &getAnatomicRegionModifierSequence()
+            { return AnatomicRegionModifierSequence; }
+
+        /** get AnatomicRegionModifierSequence (0008,2220)
+         *  @return const reference to sequence element
+         */
+        const DRTAnatomicRegionModifierSequence &getAnatomicRegionModifierSequence() const
+            { return AnatomicRegionModifierSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AnatomicRegionModifierSequence (0008,2220) vr=SQ, vm=1, type=3
+        DRTAnatomicRegionModifierSequence AnatomicRegionModifierSequence;
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTAnatomicRegionSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTAnatomicRegionSequence(const DRTAnatomicRegionSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTAnatomicRegionSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTAnatomicRegionSequence &operator=(const DRTAnatomicRegionSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index f433261f91387fcc8d590422ecd0192dca0b2988..9013843b37bfdc2fd5157a0d12630e284d2b3077 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -304,13 +304,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTBeamsModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas2.h
new file mode 100644 (file)
index 0000000..df7355b
--- /dev/null
@@ -0,0 +1,385 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTApplicatorSequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTAS2_H
+#define DRTAS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtags.h"    // for ApplicatorGeometrySequence
+
+
+/** Interface class for ApplicatorSequence (300a,0107) in RTImageModule
+ */
+class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorDescription (300a,010a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorID (300a,0108)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorType (300a,0109)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToApplicatorMountingPositionDistance (300a,0436)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ApplicatorGeometrySequence (300a,0431)
+         *  @return reference to sequence element
+         */
+        DRTApplicatorGeometrySequence &getApplicatorGeometrySequence()
+            { return ApplicatorGeometrySequence; }
+
+        /** get ApplicatorGeometrySequence (300a,0431)
+         *  @return const reference to sequence element
+         */
+        const DRTApplicatorGeometrySequence &getApplicatorGeometrySequence() const
+            { return ApplicatorGeometrySequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorDescription (300a,010a)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorID (300a,0108)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorType (300a,0109)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceToApplicatorMountingPositionDistance (300a,0436)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3
+        DcmLongString ApplicatorDescription;
+        /// ApplicatorGeometrySequence (300a,0431) vr=SQ, vm=1, type=3
+        DRTApplicatorGeometrySequence ApplicatorGeometrySequence;
+        /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1
+        DcmShortString ApplicatorID;
+        /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1
+        DcmCodeString ApplicatorType;
+        /// SourceToApplicatorMountingPositionDistance (300a,0436) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle SourceToApplicatorMountingPositionDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTApplicatorSequenceInRTImageModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTApplicatorSequenceInRTImageModule &operator=(const DRTApplicatorSequenceInRTImageModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas3.h
new file mode 100644 (file)
index 0000000..06013f6
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTApplicatorSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTAS3_H
+#define DRTAS3_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorDescription (300a,010a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorID (300a,0108)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorType (300a,0109)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorDescription (300a,010a)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorID (300a,0108)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorType (300a,0109)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3
+        DcmLongString ApplicatorDescription;
+        /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1
+        DcmShortString ApplicatorID;
+        /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1
+        DcmCodeString ApplicatorType;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTApplicatorSequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTApplicatorSequenceInRTIonBeamsModule &operator=(const DRTApplicatorSequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas4.h
new file mode 100644 (file)
index 0000000..d1e4dac
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTAS4_H
+#define DRTAS4_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsSessionRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorDescription (300a,010a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorID (300a,0108)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorType (300a,0109)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorDescription (300a,010a)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorID (300a,0108)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ApplicatorType (300a,0109)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3
+        DcmLongString ApplicatorDescription;
+        /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1
+        DcmShortString ApplicatorID;
+        /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1
+        DcmCodeString ApplicatorType;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
deleted file mode 100644 (file)
index 61436b4..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTApplicatorSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTAS5_H
-#define DRTAS5_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtags.h"    // for ApplicatorGeometrySequence
-
-
-/** Interface class for ApplicatorSequence (300a,0107) in RTImageModule
- */
-class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTImageModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorDescription (300a,010a)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorID (300a,0108)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorType (300a,0109)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToApplicatorMountingPositionDistance (300a,0436)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos = 0) const;
-
-      // --- get DICOM sequence attributes ---
-
-        /** get ApplicatorGeometrySequence (300a,0431)
-         *  @return reference to sequence element
-         */
-        DRTApplicatorGeometrySequence &getApplicatorGeometrySequence()
-            { return ApplicatorGeometrySequence; }
-
-        /** get ApplicatorGeometrySequence (300a,0431)
-         *  @return const reference to sequence element
-         */
-        const DRTApplicatorGeometrySequence &getApplicatorGeometrySequence() const
-            { return ApplicatorGeometrySequence; }
-
-      // --- set DICOM attribute values ---
-
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorDescription (300a,010a)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorID (300a,0108)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorType (300a,0109)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set SourceToApplicatorMountingPositionDistance (300a,0436)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos = 0);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3
-        DcmLongString ApplicatorDescription;
-        /// ApplicatorGeometrySequence (300a,0431) vr=SQ, vm=1, type=3
-        DRTApplicatorGeometrySequence ApplicatorGeometrySequence;
-        /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1
-        DcmShortString ApplicatorID;
-        /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1
-        DcmCodeString ApplicatorType;
-        /// SourceToApplicatorMountingPositionDistance (300a,0436) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle SourceToApplicatorMountingPositionDistance;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTApplicatorSequenceInRTImageModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTApplicatorSequenceInRTImageModule &operator=(const DRTApplicatorSequenceInRTImageModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
deleted file mode 100644 (file)
index 1d95382..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTApplicatorSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTAS6_H
-#define DRTAS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorDescription (300a,010a)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorID (300a,0108)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorType (300a,0109)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorDescription (300a,010a)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorID (300a,0108)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorType (300a,0109)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3
-        DcmLongString ApplicatorDescription;
-        /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1
-        DcmShortString ApplicatorID;
-        /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1
-        DcmCodeString ApplicatorType;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTApplicatorSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTApplicatorSequenceInRTIonBeamsModule &operator=(const DRTApplicatorSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
deleted file mode 100644 (file)
index 3245128..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTAS7_H
-#define DRTAS7_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ApplicatorSequence (300a,0107) in RTIonBeamsSessionRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorDescription (300a,010a)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorDescription(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorID (300a,0108)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorID(OFString &value, const signed long pos = 0) const;
-
-        /** get ApplicatorType (300a,0109)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getApplicatorType(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorDescription (300a,010a)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorDescription(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorID (300a,0108)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ApplicatorType (300a,0109)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setApplicatorType(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// ApplicatorDescription (300a,010a) vr=LO, vm=1, type=3
-        DcmLongString ApplicatorDescription;
-        /// ApplicatorID (300a,0108) vr=SH, vm=1, type=1
-        DcmShortString ApplicatorID;
-        /// ApplicatorType (300a,0109) vr=CS, vm=1, type=1
-        DcmCodeString ApplicatorType;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index c158e37b4848658d0576356781a0a68181e3bf6e..2f0f1166814f93d7ed0741745b13b3e51da33cac 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -21,7 +21,7 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtbads.h"   // for BrachyAccessoryDeviceSequence
 #include "dcmtk/dcmrt/seq/drtchs.h"    // for ChannelSequence
-#include "dcmtk/dcmrt/seq/drtrris9.h"  // for ReferencedReferenceImageSequence
+#include "dcmtk/dcmrt/seq/drtrris3.h"  // for ReferencedReferenceImageSequence
 
 
 /** Interface class for ApplicationSetupSequence (300a,0230) in RTBrachyApplicationSetupsModule
@@ -403,13 +403,13 @@ class DCMTK_DCMRT_EXPORT DRTApplicationSetupSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 2022d89c65cd45063409937c75b5385d1547fecb..3c17623b547f93ca657bf3f5e34fbf43efd199ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -363,13 +363,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyAccessoryDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 2b1b60e318919db790db3463b8caeb1b6af8556c..15648f8cdbc01e43eeaadf8e8b8138a2e677a335 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index cc5c947627a058afb416d178c7d3566d48a90ea5..187e154286321fe7d89cddf6a51d8539479aa2cc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -338,13 +338,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyControlPointSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl1.h
new file mode 100644 (file)
index 0000000..383606e
--- /dev/null
@@ -0,0 +1,560 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTBlockSequenceInRTBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTBL1_H
+#define DRTBL1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for BlockSequence (300a,00f4) in RTBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockData (300a,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockData(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockData (300a,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockData(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BlockData (300a,0106)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockData(OFVector<Float64> &value) const;
+
+        /** get BlockDivergence (300a,00fa)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockDivergence(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockMountingPosition (300a,00fb)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockMountingPosition(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockName (300a,00fe)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockName(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockNumber (300a,00fc)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockNumber (300a,00fc)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get BlockNumberOfPoints (300a,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockNumberOfPoints(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockNumberOfPoints (300a,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockNumberOfPoints(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get BlockThickness (300a,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockThickness(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockThickness (300a,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockThickness(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BlockTransmission (300a,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockTransmission(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockTransmission (300a,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockTransmission(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BlockTrayID (300a,00f5)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockTrayID(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockType (300a,00f8)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockType(OFString &value, const signed long pos = 0) const;
+
+        /** get MaterialID (300a,00e1)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMaterialID(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToBlockTrayDistance (300a,00f6)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToBlockTrayDistance(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToBlockTrayDistance (300a,00f6)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get TrayAccessoryCode (300a,0355)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTrayAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockData (300a,0106)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (2-2n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockData(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockDivergence (300a,00fa)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockDivergence(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockMountingPosition (300a,00fb)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockMountingPosition(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockName (300a,00fe)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockNumber (300a,00fc)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockNumberOfPoints (300a,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockNumberOfPoints(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockThickness (300a,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockThickness(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockTransmission (300a,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockTransmission(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockTrayID (300a,00f5)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockTrayID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockType (300a,00f8)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MaterialID (300a,00e1)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMaterialID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceToBlockTrayDistance (300a,00f6)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToBlockTrayDistance(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TrayAccessoryCode (300a,0355)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTrayAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// BlockData (300a,0106) vr=DS, vm=2-2n, type=2
+        DcmDecimalString BlockData;
+        /// BlockDivergence (300a,00fa) vr=CS, vm=1, type=2
+        DcmCodeString BlockDivergence;
+        /// BlockMountingPosition (300a,00fb) vr=CS, vm=1, type=3
+        DcmCodeString BlockMountingPosition;
+        /// BlockName (300a,00fe) vr=LO, vm=1, type=3
+        DcmLongString BlockName;
+        /// BlockNumber (300a,00fc) vr=IS, vm=1, type=1
+        DcmIntegerString BlockNumber;
+        /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=2
+        DcmIntegerString BlockNumberOfPoints;
+        /// BlockThickness (300a,0100) vr=DS, vm=1, type=2C
+        DcmDecimalString BlockThickness;
+        /// BlockTransmission (300a,0102) vr=DS, vm=1, type=2C
+        DcmDecimalString BlockTransmission;
+        /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3
+        DcmShortString BlockTrayID;
+        /// BlockType (300a,00f8) vr=CS, vm=1, type=1
+        DcmCodeString BlockType;
+        /// MaterialID (300a,00e1) vr=SH, vm=1, type=2
+        DcmShortString MaterialID;
+        /// SourceToBlockTrayDistance (300a,00f6) vr=DS, vm=1, type=2
+        DcmDecimalString SourceToBlockTrayDistance;
+        /// TrayAccessoryCode (300a,0355) vr=LO, vm=1, type=3
+        DcmLongString TrayAccessoryCode;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTBlockSequenceInRTBeamsModule(const DRTBlockSequenceInRTBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTBlockSequenceInRTBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTBlockSequenceInRTBeamsModule &operator=(const DRTBlockSequenceInRTBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 36da19e9bb1e61f507338e7b776973b2049a225f..503a6631b1e2c00c6f7e24476a3598c2b8d79caa 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTBlockSequenceInRTBeamsModule
+ *  Header file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -21,9 +21,9 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 
 
-/** Interface class for BlockSequence (300a,00f4) in RTBeamsModule
+/** Interface class for BlockSequence (300a,00f4) in RTImageModule
  */
-class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
+class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
   : protected DRTTypes
 {
 
@@ -181,20 +181,6 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
          */
         OFCondition getBlockThickness(Float64 &value, const unsigned long pos = 0) const;
 
-        /** get BlockTransmission (300a,0102)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockTransmission(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockTransmission (300a,0102)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockTransmission(Float64 &value, const unsigned long pos = 0) const;
-
         /** get BlockTrayID (300a,00f5)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -295,13 +281,6 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
          */
         OFCondition setBlockThickness(const OFString &value, const OFBool check = OFTrue);
 
-        /** set BlockTransmission (300a,0102)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockTransmission(const OFString &value, const OFBool check = OFTrue);
-
         /** set BlockTrayID (300a,00f5)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
@@ -356,10 +335,8 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
         DcmIntegerString BlockNumber;
         /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=2
         DcmIntegerString BlockNumberOfPoints;
-        /// BlockThickness (300a,0100) vr=DS, vm=1, type=2C
+        /// BlockThickness (300a,0100) vr=DS, vm=1, type=3
         DcmDecimalString BlockThickness;
-        /// BlockTransmission (300a,0102) vr=DS, vm=1, type=2C
-        DcmDecimalString BlockTransmission;
         /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3
         DcmShortString BlockTrayID;
         /// BlockType (300a,00f8) vr=CS, vm=1, type=1
@@ -378,22 +355,22 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+    DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTBlockSequenceInRTBeamsModule(const DRTBlockSequenceInRTBeamsModule &copy);
+    DRTBlockSequenceInRTImageModule(const DRTBlockSequenceInRTImageModule &copy);
 
     /** destructor
      */
-    virtual ~DRTBlockSequenceInRTBeamsModule();
+    virtual ~DRTBlockSequenceInRTImageModule();
 
     /** assignment operator
      *  @param copy sequence object to be copied
      *  @return reference to this object
      */
-    DRTBlockSequenceInRTBeamsModule &operator=(const DRTBlockSequenceInRTBeamsModule &copy);
+    DRTBlockSequenceInRTImageModule &operator=(const DRTBlockSequenceInRTImageModule &copy);
 
   // --- general methods ---
 
@@ -479,13 +456,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTBeamsModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
deleted file mode 100644 (file)
index 09718da..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTBlockSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTBL5_H
-#define DRTBL5_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for BlockSequence (300a,00f4) in RTImageModule
- */
-class DCMTK_DCMRT_EXPORT DRTBlockSequenceInRTImageModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockData (300a,0106)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockData(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockData (300a,0106)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockData(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BlockData (300a,0106)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockData(OFVector<Float64> &value) const;
-
-        /** get BlockDivergence (300a,00fa)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockDivergence(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockMountingPosition (300a,00fb)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockMountingPosition(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockName (300a,00fe)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockName(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockNumber (300a,00fc)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockNumber (300a,00fc)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get BlockNumberOfPoints (300a,0104)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockNumberOfPoints(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockNumberOfPoints (300a,0104)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockNumberOfPoints(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get BlockThickness (300a,0100)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockThickness(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockThickness (300a,0100)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockThickness(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BlockTrayID (300a,00f5)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockTrayID(OFString &value, const signed long pos = 0) const;
-
-        /** get BlockType (300a,00f8)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBlockType(OFString &value, const signed long pos = 0) const;
-
-        /** get MaterialID (300a,00e1)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getMaterialID(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToBlockTrayDistance (300a,00f6)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToBlockTrayDistance(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToBlockTrayDistance (300a,00f6)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get TrayAccessoryCode (300a,0355)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTrayAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockData (300a,0106)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (2-2n) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockData(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockDivergence (300a,00fa)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockDivergence(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockMountingPosition (300a,00fb)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockMountingPosition(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockName (300a,00fe)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockName(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockNumber (300a,00fc)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockNumberOfPoints (300a,0104)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockNumberOfPoints(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockThickness (300a,0100)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockThickness(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockTrayID (300a,00f5)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockTrayID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BlockType (300a,00f8)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBlockType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set MaterialID (300a,00e1)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setMaterialID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set SourceToBlockTrayDistance (300a,00f6)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setSourceToBlockTrayDistance(const OFString &value, const OFBool check = OFTrue);
-
-        /** set TrayAccessoryCode (300a,0355)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTrayAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// BlockData (300a,0106) vr=DS, vm=2-2n, type=2
-        DcmDecimalString BlockData;
-        /// BlockDivergence (300a,00fa) vr=CS, vm=1, type=2
-        DcmCodeString BlockDivergence;
-        /// BlockMountingPosition (300a,00fb) vr=CS, vm=1, type=3
-        DcmCodeString BlockMountingPosition;
-        /// BlockName (300a,00fe) vr=LO, vm=1, type=3
-        DcmLongString BlockName;
-        /// BlockNumber (300a,00fc) vr=IS, vm=1, type=1
-        DcmIntegerString BlockNumber;
-        /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=2
-        DcmIntegerString BlockNumberOfPoints;
-        /// BlockThickness (300a,0100) vr=DS, vm=1, type=3
-        DcmDecimalString BlockThickness;
-        /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3
-        DcmShortString BlockTrayID;
-        /// BlockType (300a,00f8) vr=CS, vm=1, type=1
-        DcmCodeString BlockType;
-        /// MaterialID (300a,00e1) vr=SH, vm=1, type=2
-        DcmShortString MaterialID;
-        /// SourceToBlockTrayDistance (300a,00f6) vr=DS, vm=1, type=2
-        DcmDecimalString SourceToBlockTrayDistance;
-        /// TrayAccessoryCode (300a,0355) vr=LO, vm=1, type=3
-        DcmLongString TrayAccessoryCode;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTBlockSequenceInRTImageModule(const DRTBlockSequenceInRTImageModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTBlockSequenceInRTImageModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTBlockSequenceInRTImageModule &operator=(const DRTBlockSequenceInRTImageModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index ae1a802849ae3b056cee7c2d36e00b89c6c5aa29..1e3a290b1e0f6de330a3a90f4541e0a1ec34dc83 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceLeafPairsSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 8e17dad2e5045054fc41532fcb5641b7a75dc312..08da002bb61044c6bfb314167bbf2ea69e6477b0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -252,13 +252,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDevicePositionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 85b8aafbfb3582409a51daf0fea14a8ef171e384..068829800fd024c6545064bb228323637c31b9b0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -298,13 +298,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTBeamsModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds2.h
new file mode 100644 (file)
index 0000000..1a4fc67
--- /dev/null
@@ -0,0 +1,408 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTBeamLimitingDeviceSequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTBLDS2_H
+#define DRTBLDS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for BeamLimitingDeviceSequence (300a,00b6) in RTImageModule
+ */
+class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get LeafJawPositions (300a,011c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLeafJawPositions(OFString &value, const signed long pos = 0) const;
+
+        /** get LeafJawPositions (300a,011c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLeafJawPositions(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get LeafJawPositions (300a,011c)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLeafJawPositions(OFVector<Float64> &value) const;
+
+        /** get LeafPositionBoundaries (300a,00be)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLeafPositionBoundaries(OFString &value, const signed long pos = 0) const;
+
+        /** get LeafPositionBoundaries (300a,00be)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLeafPositionBoundaries(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get LeafPositionBoundaries (300a,00be)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLeafPositionBoundaries(OFVector<Float64> &value) const;
+
+        /** get NumberOfLeafJawPairs (300a,00bc)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfLeafJawPairs(OFString &value, const signed long pos = 0) const;
+
+        /** get NumberOfLeafJawPairs (300a,00bc)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get RTBeamLimitingDeviceType (300a,00b8)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTBeamLimitingDeviceType(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToBeamLimitingDeviceDistance (300a,00ba)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToBeamLimitingDeviceDistance (300a,00ba)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set LeafJawPositions (300a,011c)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (2-2n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLeafJawPositions(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LeafPositionBoundaries (300a,00be)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (3-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLeafPositionBoundaries(const OFString &value, const OFBool check = OFTrue);
+
+        /** set NumberOfLeafJawPairs (300a,00bc)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfLeafJawPairs(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RTBeamLimitingDeviceType (300a,00b8)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTBeamLimitingDeviceType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceToBeamLimitingDeviceDistance (300a,00ba)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// LeafJawPositions (300a,011c) vr=DS, vm=2-2n, type=1
+        DcmDecimalString LeafJawPositions;
+        /// LeafPositionBoundaries (300a,00be) vr=DS, vm=3-n, type=2C
+        DcmDecimalString LeafPositionBoundaries;
+        /// NumberOfLeafJawPairs (300a,00bc) vr=IS, vm=1, type=1
+        DcmIntegerString NumberOfLeafJawPairs;
+        /// RTBeamLimitingDeviceType (300a,00b8) vr=CS, vm=1, type=1
+        DcmCodeString RTBeamLimitingDeviceType;
+        /// SourceToBeamLimitingDeviceDistance (300a,00ba) vr=DS, vm=1, type=3
+        DcmDecimalString SourceToBeamLimitingDeviceDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTBeamLimitingDeviceSequenceInRTImageModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTBeamLimitingDeviceSequenceInRTImageModule &operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
deleted file mode 100644 (file)
index 9364819..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTBeamLimitingDeviceSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTBLDS5_H
-#define DRTBLDS5_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for BeamLimitingDeviceSequence (300a,00b6) in RTImageModule
- */
-class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTImageModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get LeafJawPositions (300a,011c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafJawPositions(OFString &value, const signed long pos = 0) const;
-
-        /** get LeafJawPositions (300a,011c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafJawPositions(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get LeafJawPositions (300a,011c)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafJawPositions(OFVector<Float64> &value) const;
-
-        /** get LeafPositionBoundaries (300a,00be)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafPositionBoundaries(OFString &value, const signed long pos = 0) const;
-
-        /** get LeafPositionBoundaries (300a,00be)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafPositionBoundaries(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get LeafPositionBoundaries (300a,00be)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafPositionBoundaries(OFVector<Float64> &value) const;
-
-        /** get NumberOfLeafJawPairs (300a,00bc)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getNumberOfLeafJawPairs(OFString &value, const signed long pos = 0) const;
-
-        /** get NumberOfLeafJawPairs (300a,00bc)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get RTBeamLimitingDeviceType (300a,00b8)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRTBeamLimitingDeviceType(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToBeamLimitingDeviceDistance (300a,00ba)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToBeamLimitingDeviceDistance (300a,00ba)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set LeafJawPositions (300a,011c)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (2-2n) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setLeafJawPositions(const OFString &value, const OFBool check = OFTrue);
-
-        /** set LeafPositionBoundaries (300a,00be)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (3-n) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setLeafPositionBoundaries(const OFString &value, const OFBool check = OFTrue);
-
-        /** set NumberOfLeafJawPairs (300a,00bc)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setNumberOfLeafJawPairs(const OFString &value, const OFBool check = OFTrue);
-
-        /** set RTBeamLimitingDeviceType (300a,00b8)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRTBeamLimitingDeviceType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set SourceToBeamLimitingDeviceDistance (300a,00ba)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// LeafJawPositions (300a,011c) vr=DS, vm=2-2n, type=1
-        DcmDecimalString LeafJawPositions;
-        /// LeafPositionBoundaries (300a,00be) vr=DS, vm=3-n, type=2C
-        DcmDecimalString LeafPositionBoundaries;
-        /// NumberOfLeafJawPairs (300a,00bc) vr=IS, vm=1, type=1
-        DcmIntegerString NumberOfLeafJawPairs;
-        /// RTBeamLimitingDeviceType (300a,00b8) vr=CS, vm=1, type=1
-        DcmCodeString RTBeamLimitingDeviceType;
-        /// SourceToBeamLimitingDeviceDistance (300a,00ba) vr=DS, vm=1, type=3
-        DcmDecimalString SourceToBeamLimitingDeviceDistance;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTBeamLimitingDeviceSequenceInRTImageModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTBeamLimitingDeviceSequenceInRTImageModule &operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
deleted file mode 100644 (file)
index 351e96b..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTBLDS6_H
-#define DRTBLDS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for BeamLimitingDeviceSequence (300a,00b6) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get LeafJawPositions (300a,011c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafJawPositions(OFString &value, const signed long pos = 0) const;
-
-        /** get LeafJawPositions (300a,011c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafJawPositions(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get LeafJawPositions (300a,011c)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafJawPositions(OFVector<Float64> &value) const;
-
-        /** get LeafPositionBoundaries (300a,00be)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafPositionBoundaries(OFString &value, const signed long pos = 0) const;
-
-        /** get LeafPositionBoundaries (300a,00be)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafPositionBoundaries(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get LeafPositionBoundaries (300a,00be)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLeafPositionBoundaries(OFVector<Float64> &value) const;
-
-        /** get NumberOfLeafJawPairs (300a,00bc)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getNumberOfLeafJawPairs(OFString &value, const signed long pos = 0) const;
-
-        /** get NumberOfLeafJawPairs (300a,00bc)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get RTBeamLimitingDeviceType (300a,00b8)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRTBeamLimitingDeviceType(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToBeamLimitingDeviceDistance (300a,00ba)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToBeamLimitingDeviceDistance (300a,00ba)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set LeafJawPositions (300a,011c)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (2-2n) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setLeafJawPositions(const OFString &value, const OFBool check = OFTrue);
-
-        /** set LeafPositionBoundaries (300a,00be)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (3-n) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setLeafPositionBoundaries(const OFString &value, const OFBool check = OFTrue);
-
-        /** set NumberOfLeafJawPairs (300a,00bc)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setNumberOfLeafJawPairs(const OFString &value, const OFBool check = OFTrue);
-
-        /** set RTBeamLimitingDeviceType (300a,00b8)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRTBeamLimitingDeviceType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set SourceToBeamLimitingDeviceDistance (300a,00ba)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// LeafJawPositions (300a,011c) vr=DS, vm=2-2n, type=1
-        DcmDecimalString LeafJawPositions;
-        /// LeafPositionBoundaries (300a,00be) vr=DS, vm=3-n, type=2C
-        DcmDecimalString LeafPositionBoundaries;
-        /// NumberOfLeafJawPairs (300a,00bc) vr=IS, vm=1, type=1
-        DcmIntegerString NumberOfLeafJawPairs;
-        /// RTBeamLimitingDeviceType (300a,00b8) vr=CS, vm=1, type=1
-        DcmCodeString RTBeamLimitingDeviceType;
-        /// SourceToBeamLimitingDeviceDistance (300a,00ba) vr=DS, vm=1, type=3
-        DcmDecimalString SourceToBeamLimitingDeviceDistance;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTBeamLimitingDeviceSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &operator=(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index 5a536e71fcea2d7a83280726e592991bb6beb058..6ef2e1910c4dd8da656ee7afdbd415a75611e8ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamLimitingDeviceToleranceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 255f8a7c88f7025e7fb8bce001d4cc68835ba255..d6c2a1d374939742b37eeb3286d69e4dd84e4a5c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 1ba75a112158d4001c41c743ab1867e53b8855bf..64df3cd579f59dc88d4276553528e768879f384f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -253,13 +253,13 @@ class DCMTK_DCMRT_EXPORT DRTBrachyReferencedDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 7b449d0abb59dac821cd08c3ae8f4234de5980be..82e36ae280892248c88b3673b05e93d55a7766fb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistrationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a9f9c6861f0c7c412e25d1968ffe61d39c609f7e..9de2ff997ac5fa23af744315cdfb14441ca67bf4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtas1.h"    // for ApplicatorSequence
 #include "dcmtk/dcmrt/seq/drtblds1.h"  // for BeamLimitingDeviceSequence
-#include "dcmtk/dcmrt/seq/drtbl2.h"    // for BlockSequence
+#include "dcmtk/dcmrt/seq/drtbl1.h"    // for BlockSequence
 #include "dcmtk/dcmrt/seq/drtcos.h"    // for CompensatorSequence
 #include "dcmtk/dcmrt/seq/drtcps.h"    // for ControlPointSequence
-#include "dcmtk/dcmrt/seq/drtgas.h"    // for GeneralAccessorySequence
+#include "dcmtk/dcmrt/seq/drtdfss.h"   // for DefinitionSourceSequence
+#include "dcmtk/dcmrt/seq/drteblds.h"  // for EnhancedRTBeamLimitingDeviceSequence
+#include "dcmtk/dcmrt/seq/drtgas2.h"   // for GeneralAccessorySequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtpvis.h"   // for PlannedVerificationImageSequence
 #include "dcmtk/dcmrt/seq/drtpfms.h"   // for PrimaryFluenceModeSequence
 #include "dcmtk/dcmrt/seq/drtrbos1.h"  // for ReferencedBolusSequence
@@ -146,6 +149,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
          */
         OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+        /** get EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get EntityLongLabel (3010,0038)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const;
+
         /** get FinalCumulativeMetersetWeight (300a,010e)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -432,18 +449,54 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
         const DRTControlPointSequence &getControlPointSequence() const
             { return ControlPointSequence; }
 
+        /** get DefinitionSourceSequence (0008,1156)
+         *  @return reference to sequence element
+         */
+        DRTDefinitionSourceSequence &getDefinitionSourceSequence()
+            { return DefinitionSourceSequence; }
+
+        /** get DefinitionSourceSequence (0008,1156)
+         *  @return const reference to sequence element
+         */
+        const DRTDefinitionSourceSequence &getDefinitionSourceSequence() const
+            { return DefinitionSourceSequence; }
+
+        /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1)
+         *  @return reference to sequence element
+         */
+        DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence()
+            { return EnhancedRTBeamLimitingDeviceSequence; }
+
+        /** get EnhancedRTBeamLimitingDeviceSequence (3008,00a1)
+         *  @return const reference to sequence element
+         */
+        const DRTEnhancedRTBeamLimitingDeviceSequence &getEnhancedRTBeamLimitingDeviceSequence() const
+            { return EnhancedRTBeamLimitingDeviceSequence; }
+
         /** get GeneralAccessorySequence (300a,0420)
          *  @return reference to sequence element
          */
-        DRTGeneralAccessorySequence &getGeneralAccessorySequence()
+        DRTGeneralAccessorySequenceInRTBeamsModule &getGeneralAccessorySequence()
             { return GeneralAccessorySequence; }
 
         /** get GeneralAccessorySequence (300a,0420)
          *  @return const reference to sequence element
          */
-        const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const
+        const DRTGeneralAccessorySequenceInRTBeamsModule &getGeneralAccessorySequence() const
             { return GeneralAccessorySequence; }
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get PlannedVerificationImageSequence (300a,00ca)
          *  @return reference to sequence element
          */
@@ -565,6 +618,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
          */
         OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+        /** set EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set EntityLongLabel (3010,0038)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue);
+
         /** set FinalCumulativeMetersetWeight (300a,010e)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -721,7 +788,7 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
         DRTApplicatorSequenceInRTBeamsModule ApplicatorSequence;
         /// BeamDescription (300a,00c3) vr=ST, vm=1, type=3
         DcmShortText BeamDescription;
-        /// BeamLimitingDeviceSequence (300a,00b6) vr=SQ, vm=1, type=1
+        /// BeamLimitingDeviceSequence (300a,00b6) vr=SQ, vm=1, type=1C
         DRTBeamLimitingDeviceSequenceInRTBeamsModule BeamLimitingDeviceSequence;
         /// BeamName (300a,00c2) vr=LO, vm=1, type=3
         DcmLongString BeamName;
@@ -735,12 +802,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
         DRTCompensatorSequence CompensatorSequence;
         /// ControlPointSequence (300a,0111) vr=SQ, vm=1, type=1
         DRTControlPointSequence ControlPointSequence;
+        /// DefinitionSourceSequence (0008,1156) vr=SQ, vm=1, type=3
+        DRTDefinitionSourceSequence DefinitionSourceSequence;
         /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
         DcmLongString DeviceSerialNumber;
+        /// EnhancedRTBeamLimitingDeviceDefinitionFlag (3008,00a3) vr=CS, vm=1, type=3
+        DcmCodeString EnhancedRTBeamLimitingDeviceDefinitionFlag;
+        /// EnhancedRTBeamLimitingDeviceSequence (3008,00a1) vr=SQ, vm=1, type=1C
+        DRTEnhancedRTBeamLimitingDeviceSequence EnhancedRTBeamLimitingDeviceSequence;
+        /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3
+        DcmLongString EntityLongLabel;
         /// FinalCumulativeMetersetWeight (300a,010e) vr=DS, vm=1, type=1C
         DcmDecimalString FinalCumulativeMetersetWeight;
         /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3
-        DRTGeneralAccessorySequence GeneralAccessorySequence;
+        DRTGeneralAccessorySequenceInRTBeamsModule GeneralAccessorySequence;
         /// HighDoseTechniqueType (300a,00c7) vr=CS, vm=1, type=1C
         DcmCodeString HighDoseTechniqueType;
         /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
@@ -749,6 +824,8 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
         DcmLongString InstitutionName;
         /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
         DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// Manufacturer (0008,0070) vr=LO, vm=1, type=3
         DcmLongString Manufacturer;
         /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
@@ -904,13 +981,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 4408378a4bb0666781045742f54f1fdf5b3e5d24..f570508afe23fe6a8ea2948b9eeb6ce581f5b1fe 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSlabSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index aba13d4fdd98de2c33f33a2698337a1b14f750f4..b989977724c54a1ff27aed99aebf49d907961fb4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -112,6 +112,20 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition getBeamDosePointSSD(Float32 &value, const unsigned long pos = 0) const;
 
+        /** get BeamDosePointSourceToExternalContourDistance (300a,0094)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDosePointSourceToExternalContourDistance(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamDosePointSourceToExternalContourDistance (300a,0094)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDosePointSourceToExternalContourDistance(Float64 &value, const unsigned long pos = 0) const;
+
         /** get CumulativeMetersetWeight (300a,0134)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -163,6 +177,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition setBeamDosePointSSD(const Float32 value, const unsigned long pos = 0);
 
+        /** set BeamDosePointSourceToExternalContourDistance (300a,0094)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDosePointSourceToExternalContourDistance(const OFString &value, const OFBool check = OFTrue);
+
         /** set CumulativeMetersetWeight (300a,0134)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -188,6 +209,8 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
         DcmFloatingPointSingle BeamDosePointEquivalentDepth;
         /// BeamDosePointSSD (300a,008a) vr=FL, vm=1, type=1C
         DcmFloatingPointSingle BeamDosePointSSD;
+        /// BeamDosePointSourceToExternalContourDistance (300a,0094) vr=DS, vm=1, type=3
+        DcmDecimalString BeamDosePointSourceToExternalContourDistance;
         /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=1
         DcmDecimalString CumulativeMetersetWeight;
         /// ReferencedControlPointIndex (300c,00f0) vr=IS, vm=1, type=1C
@@ -301,13 +324,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 837f2e63dda788b42f3092f8d51c30bed18d8762..7b8654d47e3f0dc532f578125269ef3e90dafe6f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 87b5711f2a6e0d10be8d7983ff611457d84ff23d..f0691b777d2195d1e7d9b646b6205d993ebe9569 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index fcdb17188d0bd38de7010d7ecadc0a987d37bb50..9e7a20d0ef4a9070515f7199dfe330d48fedaf54 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTConsentForClinicalTrialUseSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5076294870af64bc2bc78585cf982ff7ae564b4f..c467542650d572cbf3bdd519af5c1719326730ff 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -292,13 +292,13 @@ class DCMTK_DCMRT_EXPORT DRTCalculatedDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 2ef1faa9cb7e671834c9e926202e12e197aef486..c785f800457bedecf8eba31cc81be0a6129dba97 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtois.h"    // for OperatorIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtporcs.h"  // for PurposeOfReferenceCodeSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
 
 
 /** Interface class for ContributingEquipmentSequence (0018,a001)
@@ -121,6 +123,13 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
          */
         OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+        /** get DeviceUID (0018,1002)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceUID(OFString &value, const signed long pos = 0) const;
+
         /** get InstitutionAddress (0008,0081)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -200,6 +209,18 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
 
       // --- get DICOM sequence attributes ---
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get OperatorIdentificationSequence (0008,1072)
          *  @return reference to sequence element
          */
@@ -224,6 +245,18 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
         const DRTPurposeOfReferenceCodeSequence &getPurposeOfReferenceCodeSequence() const
             { return PurposeOfReferenceCodeSequence; }
 
+        /** get UDISequence (0018,100a)
+         *  @return reference to sequence element
+         */
+        DRTUDISequence &getUDISequence()
+            { return UDISequence; }
+
+        /** get UDISequence (0018,100a)
+         *  @return const reference to sequence element
+         */
+        const DRTUDISequence &getUDISequence() const
+            { return UDISequence; }
+
       // --- set DICOM attribute values ---
 
         /** set ContributionDateTime (0018,a002)
@@ -254,6 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
          */
         OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+        /** set DeviceUID (0018,1002)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceUID(const OFString &value, const OFBool check = OFTrue);
+
         /** set InstitutionAddress (0008,0081)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -337,12 +377,16 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
         DcmDate DateOfLastCalibration;
         /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
         DcmLongString DeviceSerialNumber;
+        /// DeviceUID (0018,1002) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier DeviceUID;
         /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
         DcmShortText InstitutionAddress;
         /// InstitutionName (0008,0080) vr=LO, vm=1, type=3
         DcmLongString InstitutionName;
         /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
         DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// Manufacturer (0008,0070) vr=LO, vm=1, type=1
         DcmLongString Manufacturer;
         /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
@@ -361,6 +405,8 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
         DcmShortString StationName;
         /// TimeOfLastCalibration (0018,1201) vr=TM, vm=1-n, type=3
         DcmTime TimeOfLastCalibration;
+        /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+        DRTUDISequence UDISequence;
 
     };
 
@@ -470,13 +516,13 @@ class DCMTK_DCMRT_EXPORT DRTContributingEquipmentSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 6fe5c7ab3dc74f736719d6ba573d44d77ae7421b..249a17daf6788440b76d761f41c282fb2d176c97 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContextGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTContextGroupIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index cc4d7214f1cf90da542c9fed79a6074d4d7e0813..8f086115c90025ac01cf21b845ae69dd09ae1c02 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -100,6 +100,20 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
          */
         OFCondition getAfterloaderChannelID(OFString &value, const signed long pos = 0) const;
 
+        /** get ApplicatorShapeReferencedROINumber (300a,02a1)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorShapeReferencedROINumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ApplicatorShapeReferencedROINumber (300a,02a1)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getApplicatorShapeReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
+
         /** get ChannelEffectiveLength (300a,0271)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -443,6 +457,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
          */
         OFCondition setAfterloaderChannelID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ApplicatorShapeReferencedROINumber (300a,02a1)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setApplicatorShapeReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
+
         /** set ChannelEffectiveLength (300a,0271)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -625,6 +646,8 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
 
         /// AfterloaderChannelID (300a,0273) vr=SH, vm=1, type=3
         DcmShortString AfterloaderChannelID;
+        /// ApplicatorShapeReferencedROINumber (300a,02a1) vr=IS, vm=1, type=3
+        DcmIntegerString ApplicatorShapeReferencedROINumber;
         /// BrachyControlPointSequence (300a,02d0) vr=SQ, vm=1, type=1
         DRTBrachyControlPointSequence BrachyControlPointSequence;
         /// ChannelEffectiveLength (300a,0271) vr=DS, vm=1, type=3
@@ -788,13 +811,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index f5f4d8a4f5a8e7f473ba5512b9f1a5160435e65b..3f46080765afafc30d29021cede66050af037e1a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -143,6 +143,13 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
          */
         OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const;
 
+        /** get ObservationStartDateTime (0040,a033)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const;
+
         /** get PersonName (0040,a123)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -279,6 +286,13 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
          */
         OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ObservationStartDateTime (0040,a033)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonName (0040,a123)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -349,6 +363,8 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
         DcmDecimalString NumericValue;
         /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3
         DcmDateTime ObservationDateTime;
+        /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3
+        DcmDateTime ObservationStartDateTime;
         /// PersonName (0040,a123) vr=PN, vm=1, type=1C
         DcmPersonName PersonName;
         /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C
@@ -474,13 +490,13 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index c2baf9b30b5c9307644f9ade48afb09b6cd3432f..4607e2b8c3e5f9af252bf61172e86165fe24b3cb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTContourImageSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index b9ac282b4df59dfe872bc33474e4bb4352bcfd60..e19722ae3b3d50d444bffc93afa38b64bc0a3035 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3adf2f379908f2eeab94b9a1d8bd67dfb03e215d..ef33e8e6ccf5540c53e9dba36932f7640a2b96fc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -588,13 +588,13 @@ class DCMTK_DCMRT_EXPORT DRTCompensatorSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index e5b243271ba566ad3edd800445eed9fb5d81978e..8ebf5ddd5968d2e1e7a1b4d604257dd9e0480fbb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTCorrectedParameterSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5f913a4da614bd22b92c0a1434c8370e70846421..53b4d1be4d657f7af449872cdc5d8e3662e69bdf 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConsultingPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtics.h"    // for InstitutionCodeSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtpics.h"   // for PersonIdentificationCodeSequence
 
 
@@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
          */
         OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
 
+        /** get InstitutionalDepartmentName (0008,1040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
+
         /** get PersonAddress (0040,1102)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
         const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const
             { return InstitutionCodeSequence; }
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get PersonIdentificationCodeSequence (0040,1101)
          *  @return reference to sequence element
          */
@@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
          */
         OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
 
+        /** set InstitutionalDepartmentName (0008,1040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonAddress (0040,1102)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
         DRTInstitutionCodeSequence InstitutionCodeSequence;
         /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C
         DcmLongString InstitutionName;
+        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
+        DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// PersonAddress (0040,1102) vr=ST, vm=1, type=3
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
@@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 8f943ae4ad6537e7e76cbaa3bcf932c46c87fbfe..01b93f02189114863ddaa5885f32127b78318b70 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtbldps.h"  // for BeamLimitingDevicePositionSequence
+#include "dcmtk/dcmrt/seq/drteblos.h"  // for EnhancedRTBeamLimitingOpeningSequence
 #include "dcmtk/dcmrt/seq/drtrdrs1.h"  // for ReferencedDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
 #include "dcmtk/dcmrt/seq/drtwps.h"    // for WedgePositionSequence
@@ -415,6 +416,18 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
         const DRTBeamLimitingDevicePositionSequence &getBeamLimitingDevicePositionSequence() const
             { return BeamLimitingDevicePositionSequence; }
 
+        /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2)
+         *  @return reference to sequence element
+         */
+        DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence()
+            { return EnhancedRTBeamLimitingOpeningSequence; }
+
+        /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2)
+         *  @return const reference to sequence element
+         */
+        const DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence() const
+            { return EnhancedRTBeamLimitingOpeningSequence; }
+
         /** get ReferencedDoseReferenceSequence (300c,0050)
          *  @return reference to sequence element
          */
@@ -659,6 +672,8 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
         DcmDecimalString CumulativeMetersetWeight;
         /// DoseRateSet (300a,0115) vr=DS, vm=1, type=3
         DcmDecimalString DoseRateSet;
+        /// EnhancedRTBeamLimitingOpeningSequence (3008,00a2) vr=SQ, vm=1, type=2C
+        DRTEnhancedRTBeamLimitingOpeningSequence EnhancedRTBeamLimitingOpeningSequence;
         /// ExternalContourEntryPoint (300a,0133) vr=FL, vm=3, type=3
         DcmFloatingPointSingle ExternalContourEntryPoint;
         /// GantryAngle (300a,011e) vr=DS, vm=1, type=1C
@@ -818,13 +833,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index d23b5465e8c2efefca1f488f78a273d033452246..89fa378e94984c29c0d1a09171cf8fb8f6616706 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -92,20 +92,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
 
       // --- get DICOM attribute values ---
 
-        /** get AttachedContours (3006,0049)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAttachedContours(OFString &value, const signed long pos = 0) const;
-
-        /** get AttachedContours (3006,0049)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAttachedContours(Sint32 &value, const unsigned long pos = 0) const;
-
         /** get ContourData (3006,0050)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -147,40 +133,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
          */
         OFCondition getContourNumber(Sint32 &value, const unsigned long pos = 0) const;
 
-        /** get ContourOffsetVector (3006,0045)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getContourOffsetVector(OFString &value, const signed long pos = 0) const;
-
-        /** get ContourOffsetVector (3006,0045)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getContourOffsetVector(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get ContourOffsetVector (3006,0045)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getContourOffsetVector(OFVector<Float64> &value) const;
-
-        /** get ContourSlabThickness (3006,0044)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getContourSlabThickness(OFString &value, const signed long pos = 0) const;
-
-        /** get ContourSlabThickness (3006,0044)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getContourSlabThickness(Float64 &value, const unsigned long pos = 0) const;
-
         /** get NumberOfContourPoints (3006,0046)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -211,13 +163,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
 
       // --- set DICOM attribute values ---
 
-        /** set AttachedContours (3006,0049)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1-n) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAttachedContours(const OFString &value, const OFBool check = OFTrue);
-
         /** set ContourData (3006,0050)
          *  @param  value  value to be set (possibly multi-valued) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (3-3n) if enabled
@@ -239,20 +184,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
          */
         OFCondition setContourNumber(const OFString &value, const OFBool check = OFTrue);
 
-        /** set ContourOffsetVector (3006,0045)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (3) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setContourOffsetVector(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ContourSlabThickness (3006,0044)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setContourSlabThickness(const OFString &value, const OFBool check = OFTrue);
-
         /** set NumberOfContourPoints (3006,0046)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -265,8 +196,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// AttachedContours (3006,0049) vr=IS, vm=1-n, type=3
-        DcmIntegerString AttachedContours;
         /// ContourData (3006,0050) vr=DS, vm=3-3n, type=1
         DcmDecimalString ContourData;
         /// ContourGeometricType (3006,0042) vr=CS, vm=1, type=1
@@ -275,10 +204,6 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
         DRTContourImageSequence ContourImageSequence;
         /// ContourNumber (3006,0048) vr=IS, vm=1, type=3
         DcmIntegerString ContourNumber;
-        /// ContourOffsetVector (3006,0045) vr=DS, vm=3, type=3
-        DcmDecimalString ContourOffsetVector;
-        /// ContourSlabThickness (3006,0044) vr=DS, vm=1, type=3
-        DcmDecimalString ContourSlabThickness;
         /// NumberOfContourPoints (3006,0046) vr=IS, vm=1, type=1
         DcmIntegerString NumberOfContourPoints;
 
@@ -390,13 +315,13 @@ class DCMTK_DCMRT_EXPORT DRTContourSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 2d4d470a46a6c8c30a5f71fd4c638e62d347e154..6730d9ebb13c04d07b67f2e327c8d6226935ccd7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTConversionSourceAttributesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 8a1984291dac1fdd92305a3a3150ae1ca5b6110c..8bbc96e7a848c82bb7ce23e66b139c079567a6d8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -347,13 +347,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelShieldSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 6507b1b9f7ce39d0a839ba99401c8c7ffa4a88e7..047fff6d77759e85ae29c0a6ea2145726edaa9e0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -336,13 +336,13 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5211f70ba79c534bda9f60d024976699c9b349e2..6349fe06c3a38778f46b2b7cfd5fda63026593be 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCodingSchemeResourcesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeResourcesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 8104f9c001cec8a808ea2d4d6dd3c4bb4199132a..02bce901375bc917b56977cb6afd86eee54c3b46 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcttcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcttcs.h
new file mode 100644 (file)
index 0000000..68c94a1
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTClinicalTrialTimePointTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTCTTCS_H
+#define DRTCTTCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for ClinicalTrialTimePointTypeCodeSequence (0012,0054)
+ */
+class DCMTK_DCMRT_EXPORT DRTClinicalTrialTimePointTypeCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence(const DRTClinicalTrialTimePointTypeCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTClinicalTrialTimePointTypeCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTClinicalTrialTimePointTypeCodeSequence &operator=(const DRTClinicalTrialTimePointTypeCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcvcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcvcss.h
new file mode 100644 (file)
index 0000000..8cbb0d3
--- /dev/null
@@ -0,0 +1,321 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTConceptualVolumeConstituentSegmentationReferenceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTCVCSS_H
+#define DRTCVCSS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtrdsis.h"  // for ReferencedDirectSegmentInstanceSequence
+
+
+/** Interface class for ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012)
+ */
+class DCMTK_DCMRT_EXPORT DRTConceptualVolumeConstituentSegmentationReferenceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSegmentReferenceIndex (3010,0020)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSegmentReferenceIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ReferencedDirectSegmentInstanceSequence (3010,004a)
+         *  @return reference to sequence element
+         */
+        DRTReferencedDirectSegmentInstanceSequence &getReferencedDirectSegmentInstanceSequence()
+            { return ReferencedDirectSegmentInstanceSequence; }
+
+        /** get ReferencedDirectSegmentInstanceSequence (3010,004a)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedDirectSegmentInstanceSequence &getReferencedDirectSegmentInstanceSequence() const
+            { return ReferencedDirectSegmentInstanceSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSegmentReferenceIndex (3010,0020)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSegmentReferenceIndex(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedDirectSegmentInstanceSequence (3010,004a) vr=SQ, vm=1, type=1
+        DRTReferencedDirectSegmentInstanceSequence ReferencedDirectSegmentInstanceSequence;
+        /// ReferencedSegmentReferenceIndex (3010,0020) vr=US, vm=1, type=1
+        DcmUnsignedShort ReferencedSegmentReferenceIndex;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTConceptualVolumeConstituentSegmentationReferenceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTConceptualVolumeConstituentSegmentationReferenceSequence(const DRTConceptualVolumeConstituentSegmentationReferenceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTConceptualVolumeConstituentSegmentationReferenceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTConceptualVolumeConstituentSegmentationReferenceSequence &operator=(const DRTConceptualVolumeConstituentSegmentationReferenceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcvdas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcvdas.h
new file mode 100644 (file)
index 0000000..ac51040
--- /dev/null
@@ -0,0 +1,384 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTConceptualVolumeDerivationAlgorithmSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTCVDAS_H
+#define DRTCVDAS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtafcs.h"   // for AlgorithmFamilyCodeSequence
+#include "dcmtk/dcmrt/seq/drtancs.h"   // for AlgorithmNameCodeSequence
+
+
+/** Interface class for ConceptualVolumeDerivationAlgorithmSequence (3010,0016)
+ */
+class DCMTK_DCMRT_EXPORT DRTConceptualVolumeDerivationAlgorithmSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AlgorithmName (0066,0036)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmName(OFString &value, const signed long pos = 0) const;
+
+        /** get AlgorithmParameters (0066,0032)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmParameters(OFString &value, const signed long pos = 0) const;
+
+        /** get AlgorithmSource (0024,0202)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmSource(OFString &value, const signed long pos = 0) const;
+
+        /** get AlgorithmVersion (0066,0031)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmVersion(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get AlgorithmFamilyCodeSequence (0066,002f)
+         *  @return reference to sequence element
+         */
+        DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence()
+            { return AlgorithmFamilyCodeSequence; }
+
+        /** get AlgorithmFamilyCodeSequence (0066,002f)
+         *  @return const reference to sequence element
+         */
+        const DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence() const
+            { return AlgorithmFamilyCodeSequence; }
+
+        /** get AlgorithmNameCodeSequence (0066,0030)
+         *  @return reference to sequence element
+         */
+        DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence()
+            { return AlgorithmNameCodeSequence; }
+
+        /** get AlgorithmNameCodeSequence (0066,0030)
+         *  @return const reference to sequence element
+         */
+        const DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence() const
+            { return AlgorithmNameCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set AlgorithmName (0066,0036)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlgorithmParameters (0066,0032)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmParameters(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlgorithmSource (0024,0202)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmSource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlgorithmVersion (0066,0031)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmVersion(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AlgorithmFamilyCodeSequence (0066,002f) vr=SQ, vm=1, type=1
+        DRTAlgorithmFamilyCodeSequence AlgorithmFamilyCodeSequence;
+        /// AlgorithmName (0066,0036) vr=LO, vm=1, type=1
+        DcmLongString AlgorithmName;
+        /// AlgorithmNameCodeSequence (0066,0030) vr=SQ, vm=1, type=3
+        DRTAlgorithmNameCodeSequence AlgorithmNameCodeSequence;
+        /// AlgorithmParameters (0066,0032) vr=LT, vm=1, type=3
+        DcmLongText AlgorithmParameters;
+        /// AlgorithmSource (0024,0202) vr=LO, vm=1, type=3
+        DcmLongString AlgorithmSource;
+        /// AlgorithmVersion (0066,0031) vr=LO, vm=1, type=1
+        DcmLongString AlgorithmVersion;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTConceptualVolumeDerivationAlgorithmSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTConceptualVolumeDerivationAlgorithmSequence(const DRTConceptualVolumeDerivationAlgorithmSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTConceptualVolumeDerivationAlgorithmSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTConceptualVolumeDerivationAlgorithmSequence &operator=(const DRTConceptualVolumeDerivationAlgorithmSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcvis.h
new file mode 100644 (file)
index 0000000..cbce6b5
--- /dev/null
@@ -0,0 +1,351 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTConceptualVolumeIdentificationSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTCVIS_H
+#define DRTCVIS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtdcvs.h"   // for DerivationConceptualVolumeSequence
+#include "dcmtk/dcmrt/seq/drtecvs.h"   // for EquivalentConceptualVolumesSequence
+#include "dcmtk/dcmrt/seq/drtosirs.h"  // for OriginatingSOPInstanceReferenceSequence
+
+
+/** Interface class for ConceptualVolumeIdentificationSequence (3010,00a0)
+ */
+class DCMTK_DCMRT_EXPORT DRTConceptualVolumeIdentificationSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ConceptualVolumeUID (3010,0006)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getConceptualVolumeUID(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get DerivationConceptualVolumeSequence (3010,0014)
+         *  @return reference to sequence element
+         */
+        DRTDerivationConceptualVolumeSequence &getDerivationConceptualVolumeSequence()
+            { return DerivationConceptualVolumeSequence; }
+
+        /** get DerivationConceptualVolumeSequence (3010,0014)
+         *  @return const reference to sequence element
+         */
+        const DRTDerivationConceptualVolumeSequence &getDerivationConceptualVolumeSequence() const
+            { return DerivationConceptualVolumeSequence; }
+
+        /** get EquivalentConceptualVolumesSequence (3010,000a)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentConceptualVolumesSequence &getEquivalentConceptualVolumesSequence()
+            { return EquivalentConceptualVolumesSequence; }
+
+        /** get EquivalentConceptualVolumesSequence (3010,000a)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentConceptualVolumesSequence &getEquivalentConceptualVolumesSequence() const
+            { return EquivalentConceptualVolumesSequence; }
+
+        /** get OriginatingSOPInstanceReferenceSequence (3010,0007)
+         *  @return reference to sequence element
+         */
+        DRTOriginatingSOPInstanceReferenceSequence &getOriginatingSOPInstanceReferenceSequence()
+            { return OriginatingSOPInstanceReferenceSequence; }
+
+        /** get OriginatingSOPInstanceReferenceSequence (3010,0007)
+         *  @return const reference to sequence element
+         */
+        const DRTOriginatingSOPInstanceReferenceSequence &getOriginatingSOPInstanceReferenceSequence() const
+            { return OriginatingSOPInstanceReferenceSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ConceptualVolumeUID (3010,0006)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setConceptualVolumeUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ConceptualVolumeUID (3010,0006) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ConceptualVolumeUID;
+        /// DerivationConceptualVolumeSequence (3010,0014) vr=SQ, vm=1, type=3
+        DRTDerivationConceptualVolumeSequence DerivationConceptualVolumeSequence;
+        /// EquivalentConceptualVolumesSequence (3010,000a) vr=SQ, vm=1, type=3
+        DRTEquivalentConceptualVolumesSequence EquivalentConceptualVolumesSequence;
+        /// OriginatingSOPInstanceReferenceSequence (3010,0007) vr=SQ, vm=1, type=1C
+        DRTOriginatingSOPInstanceReferenceSequence OriginatingSOPInstanceReferenceSequence;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTConceptualVolumeIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTConceptualVolumeIdentificationSequence(const DRTConceptualVolumeIdentificationSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTConceptualVolumeIdentificationSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTConceptualVolumeIdentificationSequence &operator=(const DRTConceptualVolumeIdentificationSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdccs.h
new file mode 100644 (file)
index 0000000..fcd61e9
--- /dev/null
@@ -0,0 +1,375 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTDoseCalibrationConditionsSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTDCCS_H
+#define DRTDCCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for DoseCalibrationConditionsSequence (300c,0120)
+ */
+class DCMTK_DCMRT_EXPORT DRTDoseCalibrationConditionsSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AbsorbedDoseToMetersetRatio (300c,0121)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAbsorbedDoseToMetersetRatio(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get CalibrationDateTime (0018,1203)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCalibrationDateTime(OFString &value, const signed long pos = 0) const;
+
+        /** get CalibrationReferencePointDepth (300c,0124)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCalibrationReferencePointDepth(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DelineatedRadiationFieldSize (300c,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDelineatedRadiationFieldSize(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get SourceToSurfaceDistance (300a,0130)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToSurfaceDistance(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToSurfaceDistance (300a,0130)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToSurfaceDistance(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AbsorbedDoseToMetersetRatio (300c,0121)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAbsorbedDoseToMetersetRatio(const Float64 value, const unsigned long pos = 0);
+
+        /** set CalibrationDateTime (0018,1203)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCalibrationDateTime(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CalibrationReferencePointDepth (300c,0124)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCalibrationReferencePointDepth(const Float64 value, const unsigned long pos = 0);
+
+        /** set DelineatedRadiationFieldSize (300c,0122)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDelineatedRadiationFieldSize(const Float64 value, const unsigned long pos = 0);
+
+        /** set SourceToSurfaceDistance (300a,0130)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToSurfaceDistance(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AbsorbedDoseToMetersetRatio (300c,0121) vr=FD, vm=1, type=1
+        DcmFloatingPointDouble AbsorbedDoseToMetersetRatio;
+        /// CalibrationDateTime (0018,1203) vr=DT, vm=1, type=2
+        DcmDateTime CalibrationDateTime;
+        /// CalibrationReferencePointDepth (300c,0124) vr=FD, vm=1, type=1
+        DcmFloatingPointDouble CalibrationReferencePointDepth;
+        /// DelineatedRadiationFieldSize (300c,0122) vr=FD, vm=2, type=1
+        DcmFloatingPointDouble DelineatedRadiationFieldSize;
+        /// SourceToSurfaceDistance (300a,0130) vr=DS, vm=1, type=1
+        DcmDecimalString SourceToSurfaceDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTDoseCalibrationConditionsSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTDoseCalibrationConditionsSequence(const DRTDoseCalibrationConditionsSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTDoseCalibrationConditionsSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTDoseCalibrationConditionsSequence &operator=(const DRTDoseCalibrationConditionsSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index c5cdda26114eb691ef9a7eae3d6d13e63f8bfdf7..2c3e0c1b01f2edfae96819213fa0b0400162acd6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdcvs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdcvs.h
new file mode 100644 (file)
index 0000000..c813bda
--- /dev/null
@@ -0,0 +1,336 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTDerivationConceptualVolumeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTDCVS_H
+#define DRTDCVS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtcvdas.h"  // for ConceptualVolumeDerivationAlgorithmSequence
+#include "dcmtk/dcmrt/seq/drtscvs.h"   // for SourceConceptualVolumeSequence
+
+
+/** Interface class for DerivationConceptualVolumeSequence (3010,0014)
+ */
+class DCMTK_DCMRT_EXPORT DRTDerivationConceptualVolumeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get DerivationDescription (0008,2111)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDerivationDescription(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ConceptualVolumeDerivationAlgorithmSequence (3010,0016)
+         *  @return reference to sequence element
+         */
+        DRTConceptualVolumeDerivationAlgorithmSequence &getConceptualVolumeDerivationAlgorithmSequence()
+            { return ConceptualVolumeDerivationAlgorithmSequence; }
+
+        /** get ConceptualVolumeDerivationAlgorithmSequence (3010,0016)
+         *  @return const reference to sequence element
+         */
+        const DRTConceptualVolumeDerivationAlgorithmSequence &getConceptualVolumeDerivationAlgorithmSequence() const
+            { return ConceptualVolumeDerivationAlgorithmSequence; }
+
+        /** get SourceConceptualVolumeSequence (3010,0018)
+         *  @return reference to sequence element
+         */
+        DRTSourceConceptualVolumeSequence &getSourceConceptualVolumeSequence()
+            { return SourceConceptualVolumeSequence; }
+
+        /** get SourceConceptualVolumeSequence (3010,0018)
+         *  @return const reference to sequence element
+         */
+        const DRTSourceConceptualVolumeSequence &getSourceConceptualVolumeSequence() const
+            { return SourceConceptualVolumeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set DerivationDescription (0008,2111)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDerivationDescription(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ConceptualVolumeDerivationAlgorithmSequence (3010,0016) vr=SQ, vm=1, type=3
+        DRTConceptualVolumeDerivationAlgorithmSequence ConceptualVolumeDerivationAlgorithmSequence;
+        /// DerivationDescription (0008,2111) vr=ST, vm=1, type=3
+        DcmShortText DerivationDescription;
+        /// SourceConceptualVolumeSequence (3010,0018) vr=SQ, vm=1, type=1
+        DRTSourceConceptualVolumeSequence SourceConceptualVolumeSequence;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTDerivationConceptualVolumeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTDerivationConceptualVolumeSequence(const DRTDerivationConceptualVolumeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTDerivationConceptualVolumeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTDerivationConceptualVolumeSequence &operator=(const DRTDerivationConceptualVolumeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 8c0b7bfa1e6211cd0bd56b18c8fd1484fb8f332f..738ba71e88c7328d1a8242911b3a3fb41b3e7adc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeliveredDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -287,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTDeliveredDepthDoseParametersSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index e0e8561f7bf8fd0a985ae4e8ef3b50167c794071..f104d11066598b0edfc8e2995e2a3cc952dfab47 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -287,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTDepthDoseParametersSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdfss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdfss.h
new file mode 100644 (file)
index 0000000..58f0e3f
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTDefinitionSourceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTDFSS_H
+#define DRTDFSS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for DefinitionSourceSequence (0008,1156)
+ */
+class DCMTK_DCMRT_EXPORT DRTDefinitionSourceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTDefinitionSourceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTDefinitionSourceSequence(const DRTDefinitionSourceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTDefinitionSourceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTDefinitionSourceSequence &operator=(const DRTDefinitionSourceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 47287ac6ed351634e05378ec9289d5b262b00df8..a7ce1fb0e384eb422610112279be1a158718289f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeidentificationActionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 2949c88a463d38545b4c7d44d96e068046c1c083..31f75dba445753e0eb651a27e8af7ee09c479a6a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 33172ea75a1b90f0ce254309efaeccaf2f454656..92200ba6f9badfe510ee0f8f26aff9b05fc4d051 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a3f58126e97c6527487a998c9ec2c6f467dbe302..f4a18f8c62ed700a258705065e838226fd0ba495 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -223,13 +223,13 @@ class DCMTK_DCMRT_EXPORT DRTDICOMRetrievalSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index be83d25037c9cb777a525b4da02433caf5953ca9..00b8c719d478a331e97407a1014b849fb0c626d0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -622,13 +622,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 4ced8765bc61c9e1ea2d523f87b81969d4161003..a0c0bdb6dee752a98fa6bb6d73e4602d4c55c2fd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -652,13 +652,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 61145ab75424c94929f84352abc34ab80942a000..a9c3014b48b9865df2a07ea590538b0596797798 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 8fe2324a6444790a690d53c10bc132ecf1dec8ab..6d1a2a7c48b80dffef330f8e5592fdfeafbeb89a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -352,13 +352,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdtcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdtcs.h
new file mode 100644 (file)
index 0000000..038f1ae
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTDeviceTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTDTCS_H
+#define DRTDTCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for DeviceTypeCodeSequence (3010,002e)
+ */
+class DCMTK_DCMRT_EXPORT DRTDeviceTypeCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTDeviceTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTDeviceTypeCodeSequence(const DRTDeviceTypeCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTDeviceTypeCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTDeviceTypeCodeSequence &operator=(const DRTDeviceTypeCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 720dbae04da0011e332052c94000bd9b15b3e729..3b0158d156297b4e22e73c45def36cfb4a0c38ab 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -432,13 +432,13 @@ class DCMTK_DCMRT_EXPORT DRTDVHSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 2a18c2f19277f6bbf8c97b99aa310b97eb6284fa..e7492fbd81785e369f4ecfa17a33af9e16045650 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTDVHReferencedROISequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a716e772694fa12a44f68623fc6d3b43bf0c1030..d84bf153e403c31d91f54cf5c014e10b2c54bf03 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTEncryptedAttributesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drteblds.h b/dcmrt/include/dcmtk/dcmrt/seq/drteblds.h
new file mode 100644 (file)
index 0000000..371b273
--- /dev/null
@@ -0,0 +1,670 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTEnhancedRTBeamLimitingDeviceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTEBLDS_H
+#define DRTEBLDS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtdtcs.h"   // for DeviceTypeCodeSequence
+#include "dcmtk/dcmrt/seq/drtfbdds.h"  // for FixedRTBeamDelimiterDeviceSequence
+#include "dcmtk/dcmrt/seq/drtpbdds.h"  // for ParallelRTBeamDelimiterDeviceSequence
+#include "dcmtk/dcmrt/seq/drtudis.h"   // for UDISequence
+
+
+/** Interface class for EnhancedRTBeamLimitingDeviceSequence (3008,00a1)
+ */
+class DCMTK_DCMRT_EXPORT DRTEnhancedRTBeamLimitingDeviceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get BeamModifierOrientationAngle (300a,0645)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamModifierOrientationAngle(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DeviceAlternateIdentifier (3010,001b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceAlternateIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get DeviceAlternateIdentifierFormat (3010,001d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceAlternateIdentifierFormat(OFString &value, const signed long pos = 0) const;
+
+        /** get DeviceAlternateIdentifierType (3010,001c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceAlternateIdentifierType(OFString &value, const signed long pos = 0) const;
+
+        /** get DeviceIndex (3010,0039)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get DeviceLabel (3010,002d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceLabel(OFString &value, const signed long pos = 0) const;
+
+        /** get DeviceSerialNumber (0018,1000)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get LongDeviceDescription (0050,0021)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongDeviceDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get Manufacturer (0008,0070)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
+
+        /** get ManufacturerDeviceIdentifier (3010,0043)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturerDeviceIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ManufacturerModelName (0008,1090)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
+
+        /** get ManufacturerModelVersion (3010,001a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturerModelVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get RTAccessoryDeviceSlotID (300a,0615)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTAccessoryDeviceSlotID(OFString &value, const signed long pos = 0) const;
+
+        /** get RTAccessoryHolderSlotID (300a,0611)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTAccessoryHolderSlotID(OFString &value, const signed long pos = 0) const;
+
+        /** get RTAccessorySlotDistance (300a,0613)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTAccessorySlotDistance(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get RTBeamLimitingDeviceDistalDistance (300a,0643)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTBeamLimitingDeviceDistalDistance(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get RTBeamLimitingDeviceProximalDistance (300a,0642)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTBeamLimitingDeviceProximalDistance(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedDefinedDeviceIndex (300a,0602)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDefinedDeviceIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedRTAccessoryHolderDeviceIndex (300a,060e)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRTAccessoryHolderDeviceIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get SoftwareVersions (0018,1020)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSoftwareVersions(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get DeviceTypeCodeSequence (3010,002e)
+         *  @return reference to sequence element
+         */
+        DRTDeviceTypeCodeSequence &getDeviceTypeCodeSequence()
+            { return DeviceTypeCodeSequence; }
+
+        /** get DeviceTypeCodeSequence (3010,002e)
+         *  @return const reference to sequence element
+         */
+        const DRTDeviceTypeCodeSequence &getDeviceTypeCodeSequence() const
+            { return DeviceTypeCodeSequence; }
+
+        /** get FixedRTBeamDelimiterDeviceSequence (300a,0646)
+         *  @return reference to sequence element
+         */
+        DRTFixedRTBeamDelimiterDeviceSequence &getFixedRTBeamDelimiterDeviceSequence()
+            { return FixedRTBeamDelimiterDeviceSequence; }
+
+        /** get FixedRTBeamDelimiterDeviceSequence (300a,0646)
+         *  @return const reference to sequence element
+         */
+        const DRTFixedRTBeamDelimiterDeviceSequence &getFixedRTBeamDelimiterDeviceSequence() const
+            { return FixedRTBeamDelimiterDeviceSequence; }
+
+        /** get ParallelRTBeamDelimiterDeviceSequence (300a,0647)
+         *  @return reference to sequence element
+         */
+        DRTParallelRTBeamDelimiterDeviceSequence &getParallelRTBeamDelimiterDeviceSequence()
+            { return ParallelRTBeamDelimiterDeviceSequence; }
+
+        /** get ParallelRTBeamDelimiterDeviceSequence (300a,0647)
+         *  @return const reference to sequence element
+         */
+        const DRTParallelRTBeamDelimiterDeviceSequence &getParallelRTBeamDelimiterDeviceSequence() const
+            { return ParallelRTBeamDelimiterDeviceSequence; }
+
+        /** get UDISequence (0018,100a)
+         *  @return reference to sequence element
+         */
+        DRTUDISequence &getUDISequence()
+            { return UDISequence; }
+
+        /** get UDISequence (0018,100a)
+         *  @return const reference to sequence element
+         */
+        const DRTUDISequence &getUDISequence() const
+            { return UDISequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set BeamModifierOrientationAngle (300a,0645)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamModifierOrientationAngle(const Float64 value, const unsigned long pos = 0);
+
+        /** set DeviceAlternateIdentifier (3010,001b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceAlternateIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DeviceAlternateIdentifierFormat (3010,001d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceAlternateIdentifierFormat(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DeviceAlternateIdentifierType (3010,001c)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceAlternateIdentifierType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DeviceIndex (3010,0039)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceIndex(const Uint16 value, const unsigned long pos = 0);
+
+        /** set DeviceLabel (3010,002d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceLabel(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DeviceSerialNumber (0018,1000)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongDeviceDescription (0050,0021)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongDeviceDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set Manufacturer (0008,0070)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ManufacturerDeviceIdentifier (3010,0043)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturerDeviceIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ManufacturerModelName (0008,1090)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ManufacturerModelVersion (3010,001a)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturerModelVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RTAccessoryDeviceSlotID (300a,0615)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTAccessoryDeviceSlotID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RTAccessoryHolderSlotID (300a,0611)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTAccessoryHolderSlotID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RTAccessorySlotDistance (300a,0613)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTAccessorySlotDistance(const Float64 value, const unsigned long pos = 0);
+
+        /** set RTBeamLimitingDeviceDistalDistance (300a,0643)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTBeamLimitingDeviceDistalDistance(const Float64 value, const unsigned long pos = 0);
+
+        /** set RTBeamLimitingDeviceProximalDistance (300a,0642)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTBeamLimitingDeviceProximalDistance(const Float64 value, const unsigned long pos = 0);
+
+        /** set ReferencedDefinedDeviceIndex (300a,0602)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedDefinedDeviceIndex(const Uint16 value, const unsigned long pos = 0);
+
+        /** set ReferencedRTAccessoryHolderDeviceIndex (300a,060e)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedRTAccessoryHolderDeviceIndex(const Uint16 value, const unsigned long pos = 0);
+
+        /** set SoftwareVersions (0018,1020)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSoftwareVersions(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// BeamModifierOrientationAngle (300a,0645) vr=FD, vm=1, type=1
+        DcmFloatingPointDouble BeamModifierOrientationAngle;
+        /// DeviceAlternateIdentifier (3010,001b) vr=UC, vm=1, type=2
+        DcmUnlimitedCharacters DeviceAlternateIdentifier;
+        /// DeviceAlternateIdentifierFormat (3010,001d) vr=LT, vm=1, type=1C
+        DcmLongText DeviceAlternateIdentifierFormat;
+        /// DeviceAlternateIdentifierType (3010,001c) vr=CS, vm=1, type=1C
+        DcmCodeString DeviceAlternateIdentifierType;
+        /// DeviceIndex (3010,0039) vr=US, vm=1, type=1
+        DcmUnsignedShort DeviceIndex;
+        /// DeviceLabel (3010,002d) vr=LO, vm=1, type=1
+        DcmLongString DeviceLabel;
+        /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=2
+        DcmLongString DeviceSerialNumber;
+        /// DeviceTypeCodeSequence (3010,002e) vr=SQ, vm=1, type=1
+        DRTDeviceTypeCodeSequence DeviceTypeCodeSequence;
+        /// FixedRTBeamDelimiterDeviceSequence (300a,0646) vr=SQ, vm=1, type=1C
+        DRTFixedRTBeamDelimiterDeviceSequence FixedRTBeamDelimiterDeviceSequence;
+        /// LongDeviceDescription (0050,0021) vr=ST, vm=1, type=3
+        DcmShortText LongDeviceDescription;
+        /// Manufacturer (0008,0070) vr=LO, vm=1, type=2
+        DcmLongString Manufacturer;
+        /// ManufacturerDeviceIdentifier (3010,0043) vr=ST, vm=1, type=2
+        DcmShortText ManufacturerDeviceIdentifier;
+        /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=2
+        DcmLongString ManufacturerModelName;
+        /// ManufacturerModelVersion (3010,001a) vr=LO, vm=1, type=2
+        DcmLongString ManufacturerModelVersion;
+        /// ParallelRTBeamDelimiterDeviceSequence (300a,0647) vr=SQ, vm=1, type=1C
+        DRTParallelRTBeamDelimiterDeviceSequence ParallelRTBeamDelimiterDeviceSequence;
+        /// RTAccessoryDeviceSlotID (300a,0615) vr=LO, vm=1, type=2C
+        DcmLongString RTAccessoryDeviceSlotID;
+        /// RTAccessoryHolderSlotID (300a,0611) vr=LO, vm=1, type=2C
+        DcmLongString RTAccessoryHolderSlotID;
+        /// RTAccessorySlotDistance (300a,0613) vr=FD, vm=1, type=2C
+        DcmFloatingPointDouble RTAccessorySlotDistance;
+        /// RTBeamLimitingDeviceDistalDistance (300a,0643) vr=FD, vm=1, type=2
+        DcmFloatingPointDouble RTBeamLimitingDeviceDistalDistance;
+        /// RTBeamLimitingDeviceProximalDistance (300a,0642) vr=FD, vm=1, type=2
+        DcmFloatingPointDouble RTBeamLimitingDeviceProximalDistance;
+        /// ReferencedDefinedDeviceIndex (300a,0602) vr=US, vm=1, type=1C
+        DcmUnsignedShort ReferencedDefinedDeviceIndex;
+        /// ReferencedRTAccessoryHolderDeviceIndex (300a,060e) vr=US, vm=1, type=2C
+        DcmUnsignedShort ReferencedRTAccessoryHolderDeviceIndex;
+        /// SoftwareVersions (0018,1020) vr=LO, vm=1-n, type=2
+        DcmLongString SoftwareVersions;
+        /// UDISequence (0018,100a) vr=SQ, vm=1, type=3
+        DRTUDISequence UDISequence;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTEnhancedRTBeamLimitingDeviceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTEnhancedRTBeamLimitingDeviceSequence(const DRTEnhancedRTBeamLimitingDeviceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTEnhancedRTBeamLimitingDeviceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTEnhancedRTBeamLimitingDeviceSequence &operator=(const DRTEnhancedRTBeamLimitingDeviceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drteblos.h b/dcmrt/include/dcmtk/dcmrt/seq/drteblos.h
new file mode 100644 (file)
index 0000000..d0ed2cd
--- /dev/null
@@ -0,0 +1,353 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTEnhancedRTBeamLimitingOpeningSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTEBLOS_H
+#define DRTEBLOS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtrbdgs.h"  // for RTBeamDelimiterGeometrySequence
+
+
+/** Interface class for EnhancedRTBeamLimitingOpeningSequence (3008,00a2)
+ */
+class DCMTK_DCMRT_EXPORT DRTEnhancedRTBeamLimitingOpeningSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ParallelRTBeamDelimiterPositions (300a,064a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getParallelRTBeamDelimiterPositions(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get RTBeamLimitingDeviceOffset (300a,064b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTBeamLimitingDeviceOffset(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedDeviceIndex (300a,0607)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDeviceIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get RTBeamDelimiterGeometrySequence (300a,064c)
+         *  @return reference to sequence element
+         */
+        DRTRTBeamDelimiterGeometrySequence &getRTBeamDelimiterGeometrySequence()
+            { return RTBeamDelimiterGeometrySequence; }
+
+        /** get RTBeamDelimiterGeometrySequence (300a,064c)
+         *  @return const reference to sequence element
+         */
+        const DRTRTBeamDelimiterGeometrySequence &getRTBeamDelimiterGeometrySequence() const
+            { return RTBeamDelimiterGeometrySequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ParallelRTBeamDelimiterPositions (300a,064a)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setParallelRTBeamDelimiterPositions(const Float64 value, const unsigned long pos = 0);
+
+        /** set RTBeamLimitingDeviceOffset (300a,064b)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTBeamLimitingDeviceOffset(const Float64 value, const unsigned long pos = 0);
+
+        /** set ReferencedDeviceIndex (300a,0607)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedDeviceIndex(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ParallelRTBeamDelimiterPositions (300a,064a) vr=FD, vm=2-n, type=1C
+        DcmFloatingPointDouble ParallelRTBeamDelimiterPositions;
+        /// RTBeamDelimiterGeometrySequence (300a,064c) vr=SQ, vm=1, type=1C
+        DRTRTBeamDelimiterGeometrySequence RTBeamDelimiterGeometrySequence;
+        /// RTBeamLimitingDeviceOffset (300a,064b) vr=FD, vm=2, type=1C
+        DcmFloatingPointDouble RTBeamLimitingDeviceOffset;
+        /// ReferencedDeviceIndex (300a,0607) vr=US, vm=1, type=1
+        DcmUnsignedShort ReferencedDeviceIndex;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTEnhancedRTBeamLimitingOpeningSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTEnhancedRTBeamLimitingOpeningSequence(const DRTEnhancedRTBeamLimitingOpeningSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTEnhancedRTBeamLimitingOpeningSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTEnhancedRTBeamLimitingOpeningSequence &operator=(const DRTEnhancedRTBeamLimitingOpeningSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index fac0230893b456e7ce585059b4d7678529e1d151..4be8b4337288f34115e272bfa9057366cde42e0e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTEquivalentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -447,13 +447,13 @@ class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtecvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecvis.h
new file mode 100644 (file)
index 0000000..e41df09
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTEquivalentConceptualVolumeInstanceReferenceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTECVIS_H
+#define DRTECVIS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009)
+ */
+class DCMTK_DCMRT_EXPORT DRTEquivalentConceptualVolumeInstanceReferenceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTEquivalentConceptualVolumeInstanceReferenceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTEquivalentConceptualVolumeInstanceReferenceSequence(const DRTEquivalentConceptualVolumeInstanceReferenceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTEquivalentConceptualVolumeInstanceReferenceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTEquivalentConceptualVolumeInstanceReferenceSequence &operator=(const DRTEquivalentConceptualVolumeInstanceReferenceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtecvs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecvs.h
new file mode 100644 (file)
index 0000000..6feb0a3
--- /dev/null
@@ -0,0 +1,321 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTEquivalentConceptualVolumesSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTECVS_H
+#define DRTECVS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecvis.h"  // for EquivalentConceptualVolumeInstanceReferenceSequence
+
+
+/** Interface class for EquivalentConceptualVolumesSequence (3010,000a)
+ */
+class DCMTK_DCMRT_EXPORT DRTEquivalentConceptualVolumesSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedConceptualVolumeUID (3010,000b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedConceptualVolumeUID(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentConceptualVolumeInstanceReferenceSequence &getEquivalentConceptualVolumeInstanceReferenceSequence()
+            { return EquivalentConceptualVolumeInstanceReferenceSequence; }
+
+        /** get EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentConceptualVolumeInstanceReferenceSequence &getEquivalentConceptualVolumeInstanceReferenceSequence() const
+            { return EquivalentConceptualVolumeInstanceReferenceSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedConceptualVolumeUID (3010,000b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedConceptualVolumeUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// EquivalentConceptualVolumeInstanceReferenceSequence (3010,0009) vr=SQ, vm=1, type=1
+        DRTEquivalentConceptualVolumeInstanceReferenceSequence EquivalentConceptualVolumeInstanceReferenceSequence;
+        /// ReferencedConceptualVolumeUID (3010,000b) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedConceptualVolumeUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTEquivalentConceptualVolumesSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTEquivalentConceptualVolumesSequence(const DRTEquivalentConceptualVolumesSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTEquivalentConceptualVolumesSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTEquivalentConceptualVolumesSequence &operator=(const DRTEquivalentConceptualVolumesSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index c4581d33ce0f762df32520b81c618dff02067476..71fdb9066955af079fa92c6f72f5ca80272763ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtas5.h"    // for ApplicatorSequence
-#include "dcmtk/dcmrt/seq/drtblds5.h"  // for BeamLimitingDeviceSequence
-#include "dcmtk/dcmrt/seq/drtbl5.h"    // for BlockSequence
-#include "dcmtk/dcmrt/seq/drtgas.h"    // for GeneralAccessorySequence
+#include "dcmtk/dcmrt/seq/drtas2.h"    // for ApplicatorSequence
+#include "dcmtk/dcmrt/seq/drtblds2.h"  // for BeamLimitingDeviceSequence
+#include "dcmtk/dcmrt/seq/drtbl2.h"    // for BlockSequence
+#include "dcmtk/dcmrt/seq/drteblos.h"  // for EnhancedRTBeamLimitingOpeningSequence
+#include "dcmtk/dcmrt/seq/drtgas4.h"   // for GeneralAccessorySequence
 #include "dcmtk/dcmrt/seq/drtpfms.h"   // for PrimaryFluenceModeSequence
 
 
@@ -357,16 +358,28 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
         const DRTBlockSequenceInRTImageModule &getBlockSequence() const
             { return BlockSequence; }
 
+        /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2)
+         *  @return reference to sequence element
+         */
+        DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence()
+            { return EnhancedRTBeamLimitingOpeningSequence; }
+
+        /** get EnhancedRTBeamLimitingOpeningSequence (3008,00a2)
+         *  @return const reference to sequence element
+         */
+        const DRTEnhancedRTBeamLimitingOpeningSequence &getEnhancedRTBeamLimitingOpeningSequence() const
+            { return EnhancedRTBeamLimitingOpeningSequence; }
+
         /** get GeneralAccessorySequence (300a,0420)
          *  @return reference to sequence element
          */
-        DRTGeneralAccessorySequence &getGeneralAccessorySequence()
+        DRTGeneralAccessorySequenceInRTImageModule &getGeneralAccessorySequence()
             { return GeneralAccessorySequence; }
 
         /** get GeneralAccessorySequence (300a,0420)
          *  @return const reference to sequence element
          */
-        const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const
+        const DRTGeneralAccessorySequenceInRTImageModule &getGeneralAccessorySequence() const
             { return GeneralAccessorySequence; }
 
         /** get PrimaryFluenceModeSequence (3002,0050)
@@ -524,6 +537,8 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
         DRTBlockSequenceInRTImageModule BlockSequence;
         /// DiaphragmPosition (3002,0034) vr=DS, vm=4, type=3
         DcmDecimalString DiaphragmPosition;
+        /// EnhancedRTBeamLimitingOpeningSequence (3008,00a2) vr=SQ, vm=1, type=2C
+        DRTEnhancedRTBeamLimitingOpeningSequence EnhancedRTBeamLimitingOpeningSequence;
         /// ExposureTime (0018,1150) vr=IS, vm=1, type=2C
         DcmIntegerString ExposureTime;
         /// ExposureTimeInms (0018,9328) vr=FD, vm=1, type=3
@@ -533,7 +548,7 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
         /// GantryPitchAngle (300a,014a) vr=FL, vm=1, type=3
         DcmFloatingPointSingle GantryPitchAngle;
         /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3
-        DRTGeneralAccessorySequence GeneralAccessorySequence;
+        DRTGeneralAccessorySequenceInRTImageModule GeneralAccessorySequence;
         /// KVP (0018,0060) vr=DS, vm=1, type=2C
         DcmDecimalString KVP;
         /// MetersetExposure (3002,0032) vr=DS, vm=1, type=2C
@@ -669,13 +684,13 @@ class DCMTK_DCMRT_EXPORT DRTExposureSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfbdds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfbdds.h
new file mode 100644 (file)
index 0000000..7086875
--- /dev/null
@@ -0,0 +1,422 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTFixedRTBeamDelimiterDeviceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTFBDDS_H
+#define DRTFBDDS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for FixedRTBeamDelimiterDeviceSequence (300a,0646)
+ */
+class DCMTK_DCMRT_EXPORT DRTFixedRTBeamDelimiterDeviceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CenterOfCircularOutline (0018,1635)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCenterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DiameterOfCircularOutline (0018,1636)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDiameterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get NumberOfPolygonalVertices (0018,1637)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineLeftVerticalEdge (0018,1631)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineLowerHorizontalEdge (0018,1634)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineRightVerticalEdge (0018,1632)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineShapeType (0018,1630)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineShapeType(OFString &value, const signed long pos = 0) const;
+
+        /** get OutlineUpperHorizontalEdge (0018,1633)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set CenterOfCircularOutline (0018,1635)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCenterOfCircularOutline(const Float64 value, const unsigned long pos = 0);
+
+        /** set DiameterOfCircularOutline (0018,1636)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDiameterOfCircularOutline(const Float64 value, const unsigned long pos = 0);
+
+        /** set NumberOfPolygonalVertices (0018,1637)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos = 0);
+
+        /** set OutlineLeftVerticalEdge (0018,1631)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos = 0);
+
+        /** set OutlineLowerHorizontalEdge (0018,1634)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos = 0);
+
+        /** set OutlineRightVerticalEdge (0018,1632)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos = 0);
+
+        /** set OutlineShapeType (0018,1630)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineShapeType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set OutlineUpperHorizontalEdge (0018,1633)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos = 0);
+
+      // --- all other attributes (without get/set methods) ---
+
+        // - VerticesOfThePolygonalOutline (0018,1638)
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CenterOfCircularOutline (0018,1635) vr=FD, vm=2, type=1C
+        DcmFloatingPointDouble CenterOfCircularOutline;
+        /// DiameterOfCircularOutline (0018,1636) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble DiameterOfCircularOutline;
+        /// NumberOfPolygonalVertices (0018,1637) vr=UL, vm=1, type=1C
+        DcmUnsignedLong NumberOfPolygonalVertices;
+        /// OutlineLeftVerticalEdge (0018,1631) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineLeftVerticalEdge;
+        /// OutlineLowerHorizontalEdge (0018,1634) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineLowerHorizontalEdge;
+        /// OutlineRightVerticalEdge (0018,1632) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineRightVerticalEdge;
+        /// OutlineShapeType (0018,1630) vr=CS, vm=1, type=1
+        DcmCodeString OutlineShapeType;
+        /// OutlineUpperHorizontalEdge (0018,1633) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineUpperHorizontalEdge;
+        /// VerticesOfThePolygonalOutline (0018,1638) vr=OF, vm=1, type=1C
+        DcmOtherFloat VerticesOfThePolygonalOutline;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTFixedRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTFixedRTBeamDelimiterDeviceSequence(const DRTFixedRTBeamDelimiterDeviceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTFixedRTBeamDelimiterDeviceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTFixedRTBeamDelimiterDeviceSequence &operator=(const DRTFixedRTBeamDelimiterDeviceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index ef7ad9e2153024ecca316fd4a99508563657ff8f..b7d045361f54be41ea5351049d3d9748509bff2f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -319,13 +319,13 @@ class DCMTK_DCMRT_EXPORT DRTFixationDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index b2cd3a6cbfa9b44a390f93c73482bee64e17dccf..58c0cf488d29141497e0051dc6cbcf2ded398d4b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTFrameExtractionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 55e4ca06bce44cfe430e11dfedf0c65ed65523e4..9aea842f6242bbb2f668f2a8b70b2471571ad078 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtrbs8.h"   // for ReferencedBeamSequence
-#include "dcmtk/dcmrt/seq/drtrbas8.h"  // for ReferencedBrachyApplicationSetupSequence
-#include "dcmtk/dcmrt/seq/drtrdrs8.h"  // for ReferencedDoseReferenceSequence
+#include "dcmtk/dcmrt/seq/drtdfss.h"   // for DefinitionSourceSequence
+#include "dcmtk/dcmrt/seq/drtrbs3.h"   // for ReferencedBeamSequence
+#include "dcmtk/dcmrt/seq/drtrbas2.h"  // for ReferencedBrachyApplicationSetupSequence
+#include "dcmtk/dcmrt/seq/drtrdrs3.h"  // for ReferencedDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
 
 
@@ -202,6 +203,18 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
 
       // --- get DICOM sequence attributes ---
 
+        /** get DefinitionSourceSequence (0008,1156)
+         *  @return reference to sequence element
+         */
+        DRTDefinitionSourceSequence &getDefinitionSourceSequence()
+            { return DefinitionSourceSequence; }
+
+        /** get DefinitionSourceSequence (0008,1156)
+         *  @return const reference to sequence element
+         */
+        const DRTDefinitionSourceSequence &getDefinitionSourceSequence() const
+            { return DefinitionSourceSequence; }
+
         /** get ReferencedBeamSequence (300c,0004)
          *  @return reference to sequence element
          */
@@ -322,6 +335,8 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
 
         /// BeamDoseMeaning (300a,008b) vr=CS, vm=1, type=3
         DcmCodeString BeamDoseMeaning;
+        /// DefinitionSourceSequence (0008,1156) vr=SQ, vm=1, type=3
+        DRTDefinitionSourceSequence DefinitionSourceSequence;
         /// FractionGroupDescription (300a,0072) vr=LO, vm=1, type=3
         DcmLongString FractionGroupDescription;
         /// FractionGroupNumber (300a,0071) vr=IS, vm=1, type=1
@@ -455,13 +470,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a847086a1e36d0b3e1c56a8b4a72563582ce3973..c631040082d660def95d913a4fad2055019a2ab0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -309,13 +309,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionGroupSummarySequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 63fd1572e6220df203462e712ee0e61c392100a6..b94db5c83dd76910b48d9c2ebded76a341bc9eea 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTFluenceMapSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3716c6e8b1b24b2104ea2f59058d01fc3027aece..7d966fd3e62a759472850b54d3caf2c9076bde23 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTFractionStatusSummarySequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
deleted file mode 100644 (file)
index 5a9ae8a..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTGeneralAccessorySequence
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTGAS_H
-#define DRTGAS_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for GeneralAccessorySequence (300a,0420)
- */
-class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequence
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get GeneralAccessoryDescription (300a,0422)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const;
-
-        /** get GeneralAccessoryID (300a,0421)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const;
-
-        /** get GeneralAccessoryNumber (300a,0424)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get GeneralAccessoryNumber (300a,0424)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get GeneralAccessoryType (300a,0423)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const;
-
-        /** get SourceToGeneralAccessoryDistance (300a,0425)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set GeneralAccessoryDescription (300a,0422)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue);
-
-        /** set GeneralAccessoryID (300a,0421)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set GeneralAccessoryNumber (300a,0424)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set GeneralAccessoryType (300a,0423)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set SourceToGeneralAccessoryDistance (300a,0425)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3
-        DcmShortText GeneralAccessoryDescription;
-        /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1
-        DcmShortString GeneralAccessoryID;
-        /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1
-        DcmIntegerString GeneralAccessoryNumber;
-        /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3
-        DcmCodeString GeneralAccessoryType;
-        /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle SourceToGeneralAccessoryDistance;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTGeneralAccessorySequence(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTGeneralAccessorySequence(const DRTGeneralAccessorySequence &copy);
-
-    /** destructor
-     */
-    virtual ~DRTGeneralAccessorySequence();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTGeneralAccessorySequence &operator=(const DRTGeneralAccessorySequence &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas1.h
new file mode 100644 (file)
index 0000000..5172197
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTGeneralAccessorySequenceInEquipmentSpecificationModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTGAS1_H
+#define DRTGAS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for GeneralAccessorySequence (300a,0420) in EquipmentSpecificationModule
+ */
+class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInEquipmentSpecificationModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryDescription (300a,0422)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryID (300a,0421)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get GeneralAccessoryType (300a,0423)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryDescription (300a,0422)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryID (300a,0421)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryNumber (300a,0424)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryType (300a,0423)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3
+        DcmShortText GeneralAccessoryDescription;
+        /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1
+        DcmShortString GeneralAccessoryID;
+        /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1
+        DcmIntegerString GeneralAccessoryNumber;
+        /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3
+        DcmCodeString GeneralAccessoryType;
+        /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle SourceToGeneralAccessoryDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTGeneralAccessorySequenceInEquipmentSpecificationModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTGeneralAccessorySequenceInEquipmentSpecificationModule &operator=(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas2.h
new file mode 100644 (file)
index 0000000..0604430
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTGeneralAccessorySequenceInRTBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTGAS2_H
+#define DRTGAS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for GeneralAccessorySequence (300a,0420) in RTBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryDescription (300a,0422)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryID (300a,0421)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get GeneralAccessoryType (300a,0423)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryDescription (300a,0422)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryID (300a,0421)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryNumber (300a,0424)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryType (300a,0423)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3
+        DcmShortText GeneralAccessoryDescription;
+        /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1
+        DcmShortString GeneralAccessoryID;
+        /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1
+        DcmIntegerString GeneralAccessoryNumber;
+        /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3
+        DcmCodeString GeneralAccessoryType;
+        /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle SourceToGeneralAccessoryDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTGeneralAccessorySequenceInRTBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTGeneralAccessorySequenceInRTBeamsModule(const DRTGeneralAccessorySequenceInRTBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTGeneralAccessorySequenceInRTBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTGeneralAccessorySequenceInRTBeamsModule &operator=(const DRTGeneralAccessorySequenceInRTBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas3.h
new file mode 100644 (file)
index 0000000..d55603f
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTGAS3_H
+#define DRTGAS3_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for GeneralAccessorySequence (300a,0420) in RTBeamsSessionRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryDescription (300a,0422)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryID (300a,0421)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get GeneralAccessoryType (300a,0423)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryDescription (300a,0422)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryID (300a,0421)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryNumber (300a,0424)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryType (300a,0423)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3
+        DcmShortText GeneralAccessoryDescription;
+        /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1
+        DcmShortString GeneralAccessoryID;
+        /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1
+        DcmIntegerString GeneralAccessoryNumber;
+        /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3
+        DcmCodeString GeneralAccessoryType;
+        /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle SourceToGeneralAccessoryDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &operator=(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas4.h
new file mode 100644 (file)
index 0000000..7cfe37e
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTGeneralAccessorySequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTGAS4_H
+#define DRTGAS4_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for GeneralAccessorySequence (300a,0420) in RTImageModule
+ */
+class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTImageModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryDescription (300a,0422)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryID (300a,0421)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get GeneralAccessoryType (300a,0423)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryDescription (300a,0422)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryID (300a,0421)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryNumber (300a,0424)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryType (300a,0423)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceToGeneralAccessoryDistance (300a,0425)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3
+        DcmShortText GeneralAccessoryDescription;
+        /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1
+        DcmShortString GeneralAccessoryID;
+        /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1
+        DcmIntegerString GeneralAccessoryNumber;
+        /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3
+        DcmCodeString GeneralAccessoryType;
+        /// SourceToGeneralAccessoryDistance (300a,0425) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle SourceToGeneralAccessoryDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTGeneralAccessorySequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTGeneralAccessorySequenceInRTImageModule(const DRTGeneralAccessorySequenceInRTImageModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTGeneralAccessorySequenceInRTImageModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTGeneralAccessorySequenceInRTImageModule &operator=(const DRTGeneralAccessorySequenceInRTImageModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas5.h
new file mode 100644 (file)
index 0000000..3c30d0e
--- /dev/null
@@ -0,0 +1,398 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTGeneralAccessorySequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTGAS5_H
+#define DRTGAS5_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for GeneralAccessorySequence (300a,0420) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryDescription (300a,0422)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryID (300a,0421)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get GeneralAccessoryType (300a,0423)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const;
+
+        /** get IsocenterToGeneralAccessoryDistance (300a,0426)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getIsocenterToGeneralAccessoryDistance(OFString &value, const signed long pos = 0) const;
+
+        /** get IsocenterToGeneralAccessoryDistance (300a,0426)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getIsocenterToGeneralAccessoryDistance(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryDescription (300a,0422)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryID (300a,0421)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryNumber (300a,0424)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryType (300a,0423)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set IsocenterToGeneralAccessoryDistance (300a,0426)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setIsocenterToGeneralAccessoryDistance(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3
+        DcmShortText GeneralAccessoryDescription;
+        /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1
+        DcmShortString GeneralAccessoryID;
+        /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1
+        DcmIntegerString GeneralAccessoryNumber;
+        /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3
+        DcmCodeString GeneralAccessoryType;
+        /// IsocenterToGeneralAccessoryDistance (300a,0426) vr=DS, vm=1, type=3
+        DcmDecimalString IsocenterToGeneralAccessoryDistance;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTGeneralAccessorySequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTGeneralAccessorySequenceInRTIonBeamsModule(const DRTGeneralAccessorySequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTGeneralAccessorySequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTGeneralAccessorySequenceInRTIonBeamsModule &operator=(const DRTGeneralAccessorySequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas6.h
new file mode 100644 (file)
index 0000000..87b9fb2
--- /dev/null
@@ -0,0 +1,375 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTGAS6_H
+#define DRTGAS6_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for GeneralAccessorySequence (300a,0420) in RTIonBeamsSessionRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryDescription (300a,0422)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryDescription(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryID (300a,0421)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryID(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get GeneralAccessoryNumber (300a,0424)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get GeneralAccessoryType (300a,0423)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getGeneralAccessoryType(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryDescription (300a,0422)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryDescription(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryID (300a,0421)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryNumber (300a,0424)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set GeneralAccessoryType (300a,0423)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setGeneralAccessoryType(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// GeneralAccessoryDescription (300a,0422) vr=ST, vm=1, type=3
+        DcmShortText GeneralAccessoryDescription;
+        /// GeneralAccessoryID (300a,0421) vr=SH, vm=1, type=1
+        DcmShortString GeneralAccessoryID;
+        /// GeneralAccessoryNumber (300a,0424) vr=IS, vm=1, type=1
+        DcmIntegerString GeneralAccessoryNumber;
+        /// GeneralAccessoryType (300a,0423) vr=CS, vm=1, type=3
+        DcmCodeString GeneralAccessoryType;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &operator=(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index ede8d46680c0fa9f4cabbf76d3a885a2bf56f8cf..db424b5b142560cf8661a3a77f1ab5b6c48f71b4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTGeneticModificationsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTGeneticModificationsCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a0508e63408f485e8e80f6125a8f691e1a2efb6c..be2e7d27ef089734b804b849220ce558fc0ac41c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTGeneticModificationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTGeneticModificationsSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a2b6264e2b255bd1c4f19687cc055a0aa27010d9..747f3f24b7f672d9ac4c133f0cff6756e9b811a1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTGroupOfPatientsIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -288,13 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTGroupOfPatientsIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index d068fcff30472a52edfadb728cedbcf45aca103b..1abb24a514dfa4f5774bf23f20b60d28c55335f3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTHL7StructuredDocumentReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 636282fdb157bf525ab05661a58eaebc48f33224..20feaca9a168b515a3cbf4c1779301f664658f7c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAdmissionIDSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 1cc54714051b9c5569e33876b6d3da8f8d96eed0..dc5313fd26efe092d0f226097829f6773527337a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfAccessionNumberSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 163b276463aa27b4ad2411ed4250ff114a130bdc..ffa2be80f5928f879a49db2fae2bbc98031e9ba3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -291,13 +291,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamLimitingDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 29a1a780e1324259ef2b4f006518560fff2bb51e..05d4804b9648ba688aa86a893f99e88996c27d50 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -473,13 +473,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 8983ae0a42740c80b452479812ea3cf11f17a14c..c5fbbff541a861813d634007d4490c55d9420df4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtas6.h"    // for ApplicatorSequence
+#include "dcmtk/dcmrt/seq/drtas3.h"    // for ApplicatorSequence
 #include "dcmtk/dcmrt/seq/drtddps.h"   // for DepthDoseParametersSequence
-#include "dcmtk/dcmrt/seq/drtgas.h"    // for GeneralAccessorySequence
+#include "dcmtk/dcmrt/seq/drtgas5.h"   // for GeneralAccessorySequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtiblds.h"  // for IonBeamLimitingDeviceSequence
 #include "dcmtk/dcmrt/seq/drtibls.h"   // for IonBlockSequence
 #include "dcmtk/dcmrt/seq/drticps.h"   // for IonControlPointSequence
@@ -30,9 +31,9 @@
 #include "dcmtk/dcmrt/seq/drtlsds.h"   // for LateralSpreadingDeviceSequence
 #include "dcmtk/dcmrt/seq/drtrms.h"    // for RangeModulatorSequence
 #include "dcmtk/dcmrt/seq/drtrshs.h"   // for RangeShifterSequence
-#include "dcmtk/dcmrt/seq/drtrbos6.h"  // for ReferencedBolusSequence
+#include "dcmtk/dcmrt/seq/drtrbos2.h"  // for ReferencedBolusSequence
 #include "dcmtk/dcmrt/seq/drtrds.h"    // for ReferencedDoseSequence
-#include "dcmtk/dcmrt/seq/drtrris6.h"  // for ReferencedReferenceImageSequence
+#include "dcmtk/dcmrt/seq/drtrris2.h"  // for ReferencedReferenceImageSequence
 #include "dcmtk/dcmrt/seq/drtsns.h"    // for SnoutSequence
 
 
@@ -148,6 +149,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
          */
         OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
 
+        /** get EntityLongLabel (3010,0038)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const;
+
         /** get FinalCumulativeMetersetWeight (300a,010e)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -513,15 +521,27 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
         /** get GeneralAccessorySequence (300a,0420)
          *  @return reference to sequence element
          */
-        DRTGeneralAccessorySequence &getGeneralAccessorySequence()
+        DRTGeneralAccessorySequenceInRTIonBeamsModule &getGeneralAccessorySequence()
             { return GeneralAccessorySequence; }
 
         /** get GeneralAccessorySequence (300a,0420)
          *  @return const reference to sequence element
          */
-        const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const
+        const DRTGeneralAccessorySequenceInRTIonBeamsModule &getGeneralAccessorySequence() const
             { return GeneralAccessorySequence; }
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get IonBeamLimitingDeviceSequence (300a,03a4)
          *  @return reference to sequence element
          */
@@ -703,6 +723,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
          */
         OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
 
+        /** set EntityLongLabel (3010,0038)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue);
+
         /** set FinalCumulativeMetersetWeight (300a,010e)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
@@ -967,6 +994,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
         DRTDepthDoseParametersSequence DepthDoseParametersSequence;
         /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
         DcmLongString DeviceSerialNumber;
+        /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3
+        DcmLongString EntityLongLabel;
         /// FinalCumulativeMetersetWeight (300a,010e) vr=DS, vm=1, type=1C
         DcmDecimalString FinalCumulativeMetersetWeight;
         /// FixationEye (300a,0150) vr=CS, vm=1, type=3
@@ -976,13 +1005,15 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
         /// FixationLightPolarAngle (300a,0358) vr=FL, vm=1, type=3
         DcmFloatingPointSingle FixationLightPolarAngle;
         /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3
-        DRTGeneralAccessorySequence GeneralAccessorySequence;
+        DRTGeneralAccessorySequenceInRTIonBeamsModule GeneralAccessorySequence;
         /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
         DcmShortText InstitutionAddress;
         /// InstitutionName (0008,0080) vr=LO, vm=1, type=3
         DcmLongString InstitutionName;
         /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
         DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// IonBeamLimitingDeviceSequence (300a,03a4) vr=SQ, vm=1, type=3
         DRTIonBeamLimitingDeviceSequence IonBeamLimitingDeviceSequence;
         /// IonBlockSequence (300a,03a6) vr=SQ, vm=1, type=1C
@@ -1172,13 +1203,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index b85e25f74a755f6056c2d56dba0fa2a168ce3c97..a1d57a81e12c7ad6b5ccb3d6cd18d0b7add3e9e3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 #include "dcmtk/dcmrt/seq/drtbldps.h"  // for BeamLimitingDevicePositionSequence
 #include "dcmtk/dcmrt/seq/drtcpas.h"   // for CorrectedParameterSequence
 #include "dcmtk/dcmrt/seq/drtiwps.h"   // for IonWedgePositionSequence
-#include "dcmtk/dcmrt/seq/drtlsds7.h"  // for LateralSpreadingDeviceSettingsSequence
+#include "dcmtk/dcmrt/seq/drtlsds2.h"  // for LateralSpreadingDeviceSettingsSequence
 #include "dcmtk/dcmrt/seq/drtos.h"     // for OverrideSequence
-#include "dcmtk/dcmrt/seq/drtrmss7.h"  // for RangeModulatorSettingsSequence
-#include "dcmtk/dcmrt/seq/drtrshs7.h"  // for RangeShifterSettingsSequence
+#include "dcmtk/dcmrt/seq/drtrmss2.h"  // for RangeModulatorSettingsSequence
+#include "dcmtk/dcmrt/seq/drtrshs2.h"  // for RangeShifterSettingsSequence
 
 
 /** Interface class for IonControlPointDeliverySequence (3008,0041) in RTIonBeamsSessionRecordModule
@@ -329,6 +329,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
          */
         OFCondition getScanSpotReordered(OFString &value, const signed long pos = 0) const;
 
+        /** get ScanSpotSizesDelivered (300a,0399)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getScanSpotSizesDelivered(Float32 &value, const unsigned long pos = 0) const;
+
         /** get ScanSpotTimeOffset (300a,038f)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1)
@@ -697,6 +704,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
          */
         OFCondition setScanSpotReordered(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ScanSpotSizesDelivered (300a,0399)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2-2n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setScanSpotSizesDelivered(const Float32 value, const unsigned long pos = 0);
+
         /** set ScanSpotTimeOffset (300a,038f)
          *  @param  value  value to be set (should be valid for this VR)
          *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
@@ -858,6 +872,8 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
         DcmIntegerString ScanSpotPrescribedIndices;
         /// ScanSpotReordered (300a,0393) vr=CS, vm=1, type=3
         DcmCodeString ScanSpotReordered;
+        /// ScanSpotSizesDelivered (300a,0399) vr=FL, vm=2-2n, type=3
+        DcmFloatingPointSingle ScanSpotSizesDelivered;
         /// ScanSpotTimeOffset (300a,038f) vr=FL, vm=1-n, type=3
         DcmFloatingPointSingle ScanSpotTimeOffset;
         /// ScanSpotTuneID (300a,0390) vr=SH, vm=1, type=1C
@@ -995,13 +1011,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointDeliverySequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 4026110991a53cb89bc0706edadc801ad5fd3594..f53477730355254bd64b133ecef918b232ea9707 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtbldps.h"  // for BeamLimitingDevicePositionSequence
 #include "dcmtk/dcmrt/seq/drtiwps.h"   // for IonWedgePositionSequence
-#include "dcmtk/dcmrt/seq/drtlsds6.h"  // for LateralSpreadingDeviceSettingsSequence
-#include "dcmtk/dcmrt/seq/drtrmss6.h"  // for RangeModulatorSettingsSequence
-#include "dcmtk/dcmrt/seq/drtrshs6.h"  // for RangeShifterSettingsSequence
-#include "dcmtk/dcmrt/seq/drtrdrs6.h"  // for ReferencedDoseReferenceSequence
+#include "dcmtk/dcmrt/seq/drtlsds1.h"  // for LateralSpreadingDeviceSettingsSequence
+#include "dcmtk/dcmrt/seq/drtrmss1.h"  // for RangeModulatorSettingsSequence
+#include "dcmtk/dcmrt/seq/drtrshs1.h"  // for RangeShifterSettingsSequence
+#include "dcmtk/dcmrt/seq/drtrdrs2.h"  // for ReferencedDoseReferenceSequence
 
 
 /** Interface class for IonControlPointSequence (300a,03a8) in RTIonBeamsModule
@@ -944,13 +944,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 538cbbb9b3d37273a9dccf9ee1ad5b2941755763..acf8eea0c4dc9e7e3fc76b8d1ac0ab7130f99dae 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtidcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtidcs.h
new file mode 100644 (file)
index 0000000..71145d0
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTInstitutionalDepartmentTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTIDCS_H
+#define DRTIDCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for InstitutionalDepartmentTypeCodeSequence (0008,1041)
+ */
+class DCMTK_DCMRT_EXPORT DRTInstitutionalDepartmentTypeCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence(const DRTInstitutionalDepartmentTypeCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTInstitutionalDepartmentTypeCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTInstitutionalDepartmentTypeCodeSequence &operator=(const DRTInstitutionalDepartmentTypeCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index a7cbf87d6ee39cc44b3f9210863c3b2a2506969f..6cb42e36451b6985e49dcb743bbe56d934cfce28 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -550,13 +550,13 @@ class DCMTK_DCMRT_EXPORT DRTIconImageSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 91747392cc11eb4ee0439facf78d0ce2c2f0816a..277739707b9efa8c5e1b4ccb30702e1fff379048 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -302,13 +302,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfPatientIDQualifiersSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index b335c12e0246a3d540485eb89510bf967e406477..1f8372da40db6689ec91373be7ce2d51e227e57b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -539,13 +539,13 @@ class DCMTK_DCMRT_EXPORT DRTIonRangeCompensatorSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 7da46477cafbf7176be459e224c473f03702107c..b262c5c0064813a8a4d91e4d31830387d8c4531c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTIssuerOfServiceEpisodeIDSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 52d4bbe288b9c7c6d9b3980873b396bf0e724df3..37afe2038c01d78156468ee6fc55f6be633009e0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -541,13 +541,13 @@ class DCMTK_DCMRT_EXPORT DRTIonToleranceTableSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5e67359ed88367cb05a21c034b4dcac32eae69a4..80c1623b39860131fdf5915e0524f77b319ade25 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgePositionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 9628e8386d9f7bdd14f2e653973a7ee415c5be8f..a425ea702002fab553f0603eeabc8a3f83eb4ec2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -340,13 +340,13 @@ class DCMTK_DCMRT_EXPORT DRTIonWedgeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index ee7e7f0062031cd7910cd83d4e0d27ab1e1b295e..fb86cc7fb2e07474b143d037cf94d9ab9327225b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds1.h
new file mode 100644 (file)
index 0000000..e69a910
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTLSDS1_H
+#define DRTLSDS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get IsocenterToLateralSpreadingDeviceDistance (300a,0374)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get LateralSpreadingDeviceSetting (300a,0372)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const;
+
+        /** get LateralSpreadingDeviceWaterEquivalentThickness (300a,033c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set IsocenterToLateralSpreadingDeviceDistance (300a,0374)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos = 0);
+
+        /** set LateralSpreadingDeviceSetting (300a,0372)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LateralSpreadingDeviceWaterEquivalentThickness (300a,033c)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
+
+        /** set ReferencedLateralSpreadingDeviceNumber (300c,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// IsocenterToLateralSpreadingDeviceDistance (300a,0374) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle IsocenterToLateralSpreadingDeviceDistance;
+        /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1
+        DcmLongString LateralSpreadingDeviceSetting;
+        /// LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle LateralSpreadingDeviceWaterEquivalentThickness;
+        /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedLateralSpreadingDeviceNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds2.h
new file mode 100644 (file)
index 0000000..5e09d22
--- /dev/null
@@ -0,0 +1,327 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTLSDS2_H
+#define DRTLSDS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsSessionRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get LateralSpreadingDeviceSetting (300a,0372)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set LateralSpreadingDeviceSetting (300a,0372)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedLateralSpreadingDeviceNumber (300c,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1
+        DcmLongString LateralSpreadingDeviceSetting;
+        /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedLateralSpreadingDeviceNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
deleted file mode 100644 (file)
index f34a3ef..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTLSDS6_H
-#define DRTLSDS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get IsocenterToLateralSpreadingDeviceDistance (300a,0374)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get LateralSpreadingDeviceSetting (300a,0372)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const;
-
-        /** get LateralSpreadingDeviceWaterEquivalentThickness (300a,033c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set IsocenterToLateralSpreadingDeviceDistance (300a,0374)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos = 0);
-
-        /** set LateralSpreadingDeviceSetting (300a,0372)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue);
-
-        /** set LateralSpreadingDeviceWaterEquivalentThickness (300a,033c)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
-
-        /** set ReferencedLateralSpreadingDeviceNumber (300c,0102)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// IsocenterToLateralSpreadingDeviceDistance (300a,0374) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle IsocenterToLateralSpreadingDeviceDistance;
-        /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1
-        DcmLongString LateralSpreadingDeviceSetting;
-        /// LateralSpreadingDeviceWaterEquivalentThickness (300a,033c) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle LateralSpreadingDeviceWaterEquivalentThickness;
-        /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedLateralSpreadingDeviceNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
deleted file mode 100644 (file)
index 687a28d..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTLSDS7_H
-#define DRTLSDS7_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for LateralSpreadingDeviceSettingsSequence (300a,0370) in RTIonBeamsSessionRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get LateralSpreadingDeviceSetting (300a,0372)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getLateralSpreadingDeviceSetting(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedLateralSpreadingDeviceNumber (300c,0102)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set LateralSpreadingDeviceSetting (300a,0372)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedLateralSpreadingDeviceNumber (300c,0102)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// LateralSpreadingDeviceSetting (300a,0372) vr=LO, vm=1, type=1
-        DcmLongString LateralSpreadingDeviceSetting;
-        /// ReferencedLateralSpreadingDeviceNumber (300c,0102) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedLateralSpreadingDeviceNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index bddd560f77d118710f32b8864206bc87dc85f502..b908f850a0b846091250837c930894be357434b9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -263,13 +263,13 @@ class DCMTK_DCMRT_EXPORT DRTMultiplexedAudioChannelsDescriptionCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 21ecf748ad50f9b3276899fecdac389f5424f3b1..493a5f29f760df3b2e100295b4b123db98e4fdc2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -203,13 +203,13 @@ class DCMTK_DCMRT_EXPORT DRTModifiedAttributesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 4f20051e073b01a54cf528f46f905a3c089d91c6..c59094e8da556e6c8094e154e94bc6812858be3a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -324,13 +324,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasuredDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 4aeb441d9c06691874aae0c9dd61c41a38e5b585..345f40825c4b4daa590cffbdd631d216382c333e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTModalityLUTSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index ce4ae9f590a243c110a7a430dbcf3910755e8cb8..f89f48e8a1da03074cd5e8e2a509a4659030e282 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTMACParametersSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index f4c4e9111f979a9c97c1125b4984212a08c73083..8c790b8789185d906cd529258a0aaf0b4f9df5c3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMappingResourceIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTMappingResourceIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 89349778fcd5b128c65168616b8cbfb739d78f78..2a19332e5a163741e2351ea2c2316a60b58faf3d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -271,13 +271,13 @@ class DCMTK_DCMRT_EXPORT DRTMotionSynchronizationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmttcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmttcs.h
new file mode 100644 (file)
index 0000000..8fb8666
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTMachineSpecificTreatmentTerminationCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTMTTCS_H
+#define DRTMTTCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for MachineSpecificTreatmentTerminationCodeSequence (300a,0716)
+ */
+class DCMTK_DCMRT_EXPORT DRTMachineSpecificTreatmentTerminationCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTMachineSpecificTreatmentTerminationCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTMachineSpecificTreatmentTerminationCodeSequence(const DRTMachineSpecificTreatmentTerminationCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTMachineSpecificTreatmentTerminationCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTMachineSpecificTreatmentTerminationCodeSequence &operator=(const DRTMachineSpecificTreatmentTerminationCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index cc590d5546d8585e7d1b576cfe28978c50a33ebc..5618fe3a1214d727aa2a5ba8acf0207846de7e13 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtnmas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtnmas.h
new file mode 100644 (file)
index 0000000..0d3a82d
--- /dev/null
@@ -0,0 +1,407 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTNonconformingModifiedAttributesSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTNMAS_H
+#define DRTNMAS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for NonconformingModifiedAttributesSequence (0400,0551)
+ */
+class DCMTK_DCMRT_EXPORT DRTNonconformingModifiedAttributesSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get NonconformingDataElementValue (0400,0552)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  count  stores number of items in the result array (if not NULL)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNonconformingDataElementValue(Uint8 *&value, unsigned long *count = NULL) const;
+
+        /** get SelectorAttribute (0072,0026)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSelectorAttribute(OFString &value, const signed long pos = 0) const;
+
+        /** get SelectorAttributePrivateCreator (0072,0056)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSelectorAttributePrivateCreator(OFString &value, const signed long pos = 0) const;
+
+        /** get SelectorSequencePointer (0072,0052)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSelectorSequencePointer(OFString &value, const signed long pos = 0) const;
+
+        /** get SelectorSequencePointerItems (0074,1057)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSelectorSequencePointerItems(OFString &value, const signed long pos = 0) const;
+
+        /** get SelectorSequencePointerItems (0074,1057)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSelectorSequencePointerItems(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get SelectorSequencePointerPrivateCreator (0072,0054)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSelectorSequencePointerPrivateCreator(OFString &value, const signed long pos = 0) const;
+
+        /** get SelectorValueNumber (0072,0028)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSelectorValueNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set NonconformingDataElementValue (0400,0552)
+         *  @param  value  array value to be set (data is copied)
+         *  @param  count  number of items in the array
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNonconformingDataElementValue(const Uint8 *value, const unsigned long count);
+
+        /** set SelectorAttribute (0072,0026)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (AT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSelectorAttribute(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SelectorAttributePrivateCreator (0072,0056)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSelectorAttributePrivateCreator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SelectorSequencePointer (0072,0052)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (AT) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSelectorSequencePointer(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SelectorSequencePointerItems (0074,1057)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSelectorSequencePointerItems(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SelectorSequencePointerPrivateCreator (0072,0054)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSelectorSequencePointerPrivateCreator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SelectorValueNumber (0072,0028)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSelectorValueNumber(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// NonconformingDataElementValue (0400,0552) vr=OB, vm=1, type=1
+        DcmOtherByteOtherWord NonconformingDataElementValue;
+        /// SelectorAttribute (0072,0026) vr=AT, vm=1, type=1C
+        DcmAttributeTag SelectorAttribute;
+        /// SelectorAttributePrivateCreator (0072,0056) vr=LO, vm=1, type=1C
+        DcmLongString SelectorAttributePrivateCreator;
+        /// SelectorSequencePointer (0072,0052) vr=AT, vm=1-n, type=1C
+        DcmAttributeTag SelectorSequencePointer;
+        /// SelectorSequencePointerItems (0074,1057) vr=IS, vm=1-n, type=1C
+        DcmIntegerString SelectorSequencePointerItems;
+        /// SelectorSequencePointerPrivateCreator (0072,0054) vr=LO, vm=1-n, type=1C
+        DcmLongString SelectorSequencePointerPrivateCreator;
+        /// SelectorValueNumber (0072,0028) vr=US, vm=1, type=1C
+        DcmUnsignedShort SelectorValueNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTNonconformingModifiedAttributesSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTNonconformingModifiedAttributesSequence(const DRTNonconformingModifiedAttributesSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTNonconformingModifiedAttributesSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTNonconformingModifiedAttributesSequence &operator=(const DRTNonconformingModifiedAttributesSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 592467e04e4cdf9cea7309de5c3a35306c6f5f66..988125b145a4eb19a95a42c8417b416e4eed40da 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtmas.h"    // for ModifiedAttributesSequence
+#include "dcmtk/dcmrt/seq/drtnmas.h"   // for NonconformingModifiedAttributesSequence
 
 
 /** Interface class for OriginalAttributesSequence (0400,0561)
@@ -134,6 +135,18 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
         const DRTModifiedAttributesSequence &getModifiedAttributesSequence() const
             { return ModifiedAttributesSequence; }
 
+        /** get NonconformingModifiedAttributesSequence (0400,0551)
+         *  @return reference to sequence element
+         */
+        DRTNonconformingModifiedAttributesSequence &getNonconformingModifiedAttributesSequence()
+            { return NonconformingModifiedAttributesSequence; }
+
+        /** get NonconformingModifiedAttributesSequence (0400,0551)
+         *  @return const reference to sequence element
+         */
+        const DRTNonconformingModifiedAttributesSequence &getNonconformingModifiedAttributesSequence() const
+            { return NonconformingModifiedAttributesSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set AttributeModificationDateTime (0400,0562)
@@ -175,6 +188,8 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
         DRTModifiedAttributesSequence ModifiedAttributesSequence;
         /// ModifyingSystem (0400,0563) vr=LO, vm=1, type=1
         DcmLongString ModifyingSystem;
+        /// NonconformingModifiedAttributesSequence (0400,0551) vr=SQ, vm=1, type=3
+        DRTNonconformingModifiedAttributesSequence NonconformingModifiedAttributesSequence;
         /// ReasonForTheAttributeModification (0400,0565) vr=CS, vm=1, type=1
         DcmCodeString ReasonForTheAttributeModification;
         /// SourceOfPreviousValues (0400,0564) vr=LO, vm=1, type=2
@@ -288,13 +303,13 @@ class DCMTK_DCMRT_EXPORT DRTOriginalAttributesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 1d557ecddbe01689b7455b5fcf99437d0cc274ca..d5bdd60ef5def62b2b600ca83a41c3fb523075d6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtics.h"    // for InstitutionCodeSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtpics.h"   // for PersonIdentificationCodeSequence
 
 
@@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
          */
         OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
 
+        /** get InstitutionalDepartmentName (0008,1040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
+
         /** get PersonAddress (0040,1102)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
         const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const
             { return InstitutionCodeSequence; }
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get PersonIdentificationCodeSequence (0040,1101)
          *  @return reference to sequence element
          */
@@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
          */
         OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
 
+        /** set InstitutionalDepartmentName (0008,1040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonAddress (0040,1102)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
         DRTInstitutionCodeSequence InstitutionCodeSequence;
         /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C
         DcmLongString InstitutionName;
+        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
+        DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// PersonAddress (0040,1102) vr=ST, vm=1, type=3
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
@@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 71c60ece37544e92c02d54324fc7a362b7424ecf..3472a15c432e4a21060e08ecb6134acf9ac0076c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,13 +272,13 @@ class DCMTK_DCMRT_EXPORT DRTOtherPatientIDsSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index de3b66203d5ac496e325d6fa2ecfd20af4adf3ef..e7e8c80f54d97ab2fc7c3ce084efb41562cd6923 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -327,13 +327,13 @@ class DCMTK_DCMRT_EXPORT DRTOverrideSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtosirs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtosirs.h
new file mode 100644 (file)
index 0000000..1576964
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTOriginatingSOPInstanceReferenceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTOSIRS_H
+#define DRTOSIRS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for OriginatingSOPInstanceReferenceSequence (3010,0007)
+ */
+class DCMTK_DCMRT_EXPORT DRTOriginatingSOPInstanceReferenceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTOriginatingSOPInstanceReferenceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTOriginatingSOPInstanceReferenceSequence(const DRTOriginatingSOPInstanceReferenceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTOriginatingSOPInstanceReferenceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTOriginatingSOPInstanceReferenceSequence &operator=(const DRTOriginatingSOPInstanceReferenceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpasms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpasms.h
new file mode 100644 (file)
index 0000000..e9aacad
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTPrimaryAnatomicStructureModifierSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTPASMS_H
+#define DRTPASMS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for PrimaryAnatomicStructureModifierSequence (0008,2230)
+ */
+class DCMTK_DCMRT_EXPORT DRTPrimaryAnatomicStructureModifierSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTPrimaryAnatomicStructureModifierSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTPrimaryAnatomicStructureModifierSequence(const DRTPrimaryAnatomicStructureModifierSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTPrimaryAnatomicStructureModifierSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTPrimaryAnatomicStructureModifierSequence &operator=(const DRTPrimaryAnatomicStructureModifierSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpass.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpass.h
new file mode 100644 (file)
index 0000000..21778cf
--- /dev/null
@@ -0,0 +1,560 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTPrimaryAnatomicStructureSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTPASS_H
+#define DRTPASS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+#include "dcmtk/dcmrt/seq/drtpasms.h"  // for PrimaryAnatomicStructureModifierSequence
+
+
+/** Interface class for PrimaryAnatomicStructureSequence (0008,2228)
+ */
+class DCMTK_DCMRT_EXPORT DRTPrimaryAnatomicStructureSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+        /** get PrimaryAnatomicStructureModifierSequence (0008,2230)
+         *  @return reference to sequence element
+         */
+        DRTPrimaryAnatomicStructureModifierSequence &getPrimaryAnatomicStructureModifierSequence()
+            { return PrimaryAnatomicStructureModifierSequence; }
+
+        /** get PrimaryAnatomicStructureModifierSequence (0008,2230)
+         *  @return const reference to sequence element
+         */
+        const DRTPrimaryAnatomicStructureModifierSequence &getPrimaryAnatomicStructureModifierSequence() const
+            { return PrimaryAnatomicStructureModifierSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// PrimaryAnatomicStructureModifierSequence (0008,2230) vr=SQ, vm=1, type=3
+        DRTPrimaryAnatomicStructureModifierSequence PrimaryAnatomicStructureModifierSequence;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTPrimaryAnatomicStructureSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTPrimaryAnatomicStructureSequence(const DRTPrimaryAnatomicStructureSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTPrimaryAnatomicStructureSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTPrimaryAnatomicStructureSequence &operator=(const DRTPrimaryAnatomicStructureSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 92686fddf0bdbc2981dd45f13a0b7a9630bac233..0f1ba3ad1c0560e74dbaeb36c88b4bd6e13d645d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpbdds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpbdds.h
new file mode 100644 (file)
index 0000000..bb5a17a
--- /dev/null
@@ -0,0 +1,385 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTParallelRTBeamDelimiterDeviceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTPBDDS_H
+#define DRTPBDDS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtpbdos.h"  // for ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence
+
+
+/** Interface class for ParallelRTBeamDelimiterDeviceSequence (300a,0647)
+ */
+class DCMTK_DCMRT_EXPORT DRTParallelRTBeamDelimiterDeviceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get NumberOfParallelRTBeamDelimiters (300a,0648)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfParallelRTBeamDelimiters(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get ParallelRTBeamDelimiterBoundaries (300a,0649)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getParallelRTBeamDelimiterBoundaries(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ParallelRTBeamDelimiterLeafMountingSide (300a,064f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getParallelRTBeamDelimiterLeafMountingSide(OFString &value, const signed long pos = 0) const;
+
+        /** get ParallelRTBeamDelimiterOpeningExtents (3008,00a4)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getParallelRTBeamDelimiterOpeningExtents(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ParallelRTBeamDelimiterOpeningMode (300a,064e)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getParallelRTBeamDelimiterOpeningMode(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644)
+         *  @return reference to sequence element
+         */
+        DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &getParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence()
+            { return ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence; }
+
+        /** get ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644)
+         *  @return const reference to sequence element
+         */
+        const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &getParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence() const
+            { return ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set NumberOfParallelRTBeamDelimiters (300a,0648)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfParallelRTBeamDelimiters(const Uint16 value, const unsigned long pos = 0);
+
+        /** set ParallelRTBeamDelimiterBoundaries (300a,0649)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setParallelRTBeamDelimiterBoundaries(const Float64 value, const unsigned long pos = 0);
+
+        /** set ParallelRTBeamDelimiterLeafMountingSide (300a,064f)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setParallelRTBeamDelimiterLeafMountingSide(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ParallelRTBeamDelimiterOpeningExtents (3008,00a4)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2-2n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setParallelRTBeamDelimiterOpeningExtents(const Float64 value, const unsigned long pos = 0);
+
+        /** set ParallelRTBeamDelimiterOpeningMode (300a,064e)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setParallelRTBeamDelimiterOpeningMode(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// NumberOfParallelRTBeamDelimiters (300a,0648) vr=US, vm=1, type=1
+        DcmUnsignedShort NumberOfParallelRTBeamDelimiters;
+        /// ParallelRTBeamDelimiterBoundaries (300a,0649) vr=FD, vm=2-n, type=1
+        DcmFloatingPointDouble ParallelRTBeamDelimiterBoundaries;
+        /// ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644) vr=SQ, vm=1, type=1
+        DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence;
+        /// ParallelRTBeamDelimiterLeafMountingSide (300a,064f) vr=CS, vm=1-n, type=1C
+        DcmCodeString ParallelRTBeamDelimiterLeafMountingSide;
+        /// ParallelRTBeamDelimiterOpeningExtents (3008,00a4) vr=FD, vm=2-2n, type=1C
+        DcmFloatingPointDouble ParallelRTBeamDelimiterOpeningExtents;
+        /// ParallelRTBeamDelimiterOpeningMode (300a,064e) vr=CS, vm=1, type=1
+        DcmCodeString ParallelRTBeamDelimiterOpeningMode;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTParallelRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTParallelRTBeamDelimiterDeviceSequence(const DRTParallelRTBeamDelimiterDeviceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTParallelRTBeamDelimiterDeviceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTParallelRTBeamDelimiterDeviceSequence &operator=(const DRTParallelRTBeamDelimiterDeviceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpbdos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpbdos.h
new file mode 100644 (file)
index 0000000..0afd583
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTPBDOS_H
+#define DRTPBDOS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence (300a,0644)
+ */
+class DCMTK_DCMRT_EXPORT DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &operator=(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index f648e1305aa1f6f0eb69a954dfed0c1ce0e209e6..23dca8bd8946e6094e4b761fd39c15efacf9d5f0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 409125f99223b780a3b06f4b88b4504c8e18ae2e..cf98a55fac9264a6c5df4670d27f2d747a8ca3cd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -144,6 +144,13 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
          */
         OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const;
 
+        /** get ObservationStartDateTime (0040,a033)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const;
+
         /** get PersonName (0040,a123)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -292,6 +299,13 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
          */
         OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ObservationStartDateTime (0040,a033)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonName (0040,a123)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -364,6 +378,8 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
         DcmDecimalString NumericValue;
         /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3
         DcmDateTime ObservationDateTime;
+        /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3
+        DcmDateTime ObservationStartDateTime;
         /// PersonName (0040,a123) vr=PN, vm=1, type=1C
         DcmPersonName PersonName;
         /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C
@@ -489,13 +505,13 @@ class DCMTK_DCMRT_EXPORT DRTProtocolContextSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index d352253177e2790df0dfafd763538c3e755e2ddd..ca63ec80f8b16a26e13287e10a5bb14874c8802e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPrivateDataElementCharacteristicsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -303,13 +303,13 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index fb2dcb581e0e7ed7ef0777fbc70b3aaceda15560..4580879092eed60a55b56baa0c8ca698b0e71363 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPrivateDataElementDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -351,13 +351,13 @@ class DCMTK_DCMRT_EXPORT DRTPrivateDataElementDefinitionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 7f617ece8b2168ec62555fa4ed8e6ca32d578bf4..69f446a9a3d903d0daa5ae6443295d933b7ce106 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTPrimaryFluenceModeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a92590b1fb9cfc4c52c91d0c7610b7596b534fab..fa61fc863381df63d6b6b3efe6d6d7ffa22a9731 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtplos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtplos.h
new file mode 100644 (file)
index 0000000..575dfc7
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTPlanOverviewSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTPLOS_H
+#define DRTPLOS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtpros.h"   // for PrescriptionOverviewSequence
+#include "dcmtk/dcmrt/seq/drtrims.h"   // for ReferencedImageSequence
+#include "dcmtk/dcmrt/seq/drtrsss.h"   // for ReferencedStructureSetSequence
+#include "dcmtk/dcmrt/seq/drttscs.h"   // for TreatmentSiteCodeSequence
+
+
+/** Interface class for PlanOverviewSequence (300c,0116)
+ */
+class DCMTK_DCMRT_EXPORT DRTPlanOverviewSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CurrentFractionNumber (3008,0022)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCurrentFractionNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get CurrentFractionNumber (3008,0022)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCurrentFractionNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get NumberOfFractionsIncluded (300c,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfFractionsIncluded(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get PlanOverviewIndex (300c,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPlanOverviewIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get RTPlanLabel (300a,0002)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTPlanLabel(OFString &value, const signed long pos = 0) const;
+
+        /** get TreatmentSite (3010,0077)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTreatmentSite(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get PrescriptionOverviewSequence (300c,0114)
+         *  @return reference to sequence element
+         */
+        DRTPrescriptionOverviewSequence &getPrescriptionOverviewSequence()
+            { return PrescriptionOverviewSequence; }
+
+        /** get PrescriptionOverviewSequence (300c,0114)
+         *  @return const reference to sequence element
+         */
+        const DRTPrescriptionOverviewSequence &getPrescriptionOverviewSequence() const
+            { return PrescriptionOverviewSequence; }
+
+        /** get ReferencedImageSequence (0008,1140)
+         *  @return reference to sequence element
+         */
+        DRTReferencedImageSequence &getReferencedImageSequence()
+            { return ReferencedImageSequence; }
+
+        /** get ReferencedImageSequence (0008,1140)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedImageSequence &getReferencedImageSequence() const
+            { return ReferencedImageSequence; }
+
+        /** get ReferencedStructureSetSequence (300c,0060)
+         *  @return reference to sequence element
+         */
+        DRTReferencedStructureSetSequence &getReferencedStructureSetSequence()
+            { return ReferencedStructureSetSequence; }
+
+        /** get ReferencedStructureSetSequence (300c,0060)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedStructureSetSequence &getReferencedStructureSetSequence() const
+            { return ReferencedStructureSetSequence; }
+
+        /** get TreatmentSiteCodeSequence (3010,0078)
+         *  @return reference to sequence element
+         */
+        DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence()
+            { return TreatmentSiteCodeSequence; }
+
+        /** get TreatmentSiteCodeSequence (3010,0078)
+         *  @return const reference to sequence element
+         */
+        const DRTTreatmentSiteCodeSequence &getTreatmentSiteCodeSequence() const
+            { return TreatmentSiteCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CurrentFractionNumber (3008,0022)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCurrentFractionNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set NumberOfFractionsIncluded (300c,0119)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfFractionsIncluded(const Uint16 value, const unsigned long pos = 0);
+
+        /** set PlanOverviewIndex (300c,0117)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPlanOverviewIndex(const Uint16 value, const unsigned long pos = 0);
+
+        /** set RTPlanLabel (300a,0002)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTPlanLabel(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TreatmentSite (3010,0077)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTreatmentSite(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CurrentFractionNumber (3008,0022) vr=IS, vm=1, type=1C
+        DcmIntegerString CurrentFractionNumber;
+        /// NumberOfFractionsIncluded (300c,0119) vr=US, vm=1, type=1C
+        DcmUnsignedShort NumberOfFractionsIncluded;
+        /// PlanOverviewIndex (300c,0117) vr=US, vm=1, type=1
+        DcmUnsignedShort PlanOverviewIndex;
+        /// PrescriptionOverviewSequence (300c,0114) vr=SQ, vm=1, type=2
+        DRTPrescriptionOverviewSequence PrescriptionOverviewSequence;
+        /// RTPlanLabel (300a,0002) vr=SH, vm=1, type=2
+        DcmShortString RTPlanLabel;
+        /// ReferencedImageSequence (0008,1140) vr=SQ, vm=1, type=1C
+        DRTReferencedImageSequence ReferencedImageSequence;
+        /// ReferencedStructureSetSequence (300c,0060) vr=SQ, vm=1, type=1C
+        DRTReferencedStructureSetSequence ReferencedStructureSetSequence;
+        /// TreatmentSite (3010,0077) vr=LO, vm=1, type=2
+        DcmLongString TreatmentSite;
+        /// TreatmentSiteCodeSequence (3010,0078) vr=SQ, vm=1, type=2
+        DRTTreatmentSiteCodeSequence TreatmentSiteCodeSequence;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTPlanOverviewSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTPlanOverviewSequence(const DRTPlanOverviewSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTPlanOverviewSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTPlanOverviewSequence &operator=(const DRTPlanOverviewSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 1476bbd0923026469ef793d96db5a00a4f10058d..6d1d25239b77b8f74b3e307e2fe2bddc9e1793ab 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index f83c80b2965811e8351bf232b6d1bb400d8b39ae..ea70035da42106ce46e095606c4df89675397eec 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtics.h"    // for InstitutionCodeSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtpics.h"   // for PersonIdentificationCodeSequence
 
 
@@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
 
+        /** get InstitutionalDepartmentName (0008,1040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
+
         /** get PersonAddress (0040,1102)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
         const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const
             { return InstitutionCodeSequence; }
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get PersonIdentificationCodeSequence (0040,1101)
          *  @return reference to sequence element
          */
@@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
 
+        /** set InstitutionalDepartmentName (0008,1040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonAddress (0040,1102)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
         DRTInstitutionCodeSequence InstitutionCodeSequence;
         /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C
         DcmLongString InstitutionName;
+        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
+        DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// PersonAddress (0040,1102) vr=ST, vm=1, type=3
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
@@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 1586453edf9afc8408ee6f9d2d050aa45e6356fc..bb386b5e85be0739e898a4af6fcff85b56526ded 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpros.h
new file mode 100644 (file)
index 0000000..fca5e7d
--- /dev/null
@@ -0,0 +1,343 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTPrescriptionOverviewSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTPROS_H
+#define DRTPROS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for PrescriptionOverviewSequence (300c,0114)
+ */
+class DCMTK_DCMRT_EXPORT DRTPrescriptionOverviewSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get EntityLongLabel (3010,0038)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedROINumber (3006,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedROINumber (3006,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get TotalPrescriptionDose (300c,0115)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTotalPrescriptionDose(Float32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set EntityLongLabel (3010,0038)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedROINumber (3006,0084)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TotalPrescriptionDose (300c,0115)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTotalPrescriptionDose(const Float32 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=1C
+        DcmLongString EntityLongLabel;
+        /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=3
+        DcmIntegerString ReferencedROINumber;
+        /// TotalPrescriptionDose (300c,0115) vr=FL, vm=1, type=1
+        DcmFloatingPointSingle TotalPrescriptionDose;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTPrescriptionOverviewSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTPrescriptionOverviewSequence(const DRTPrescriptionOverviewSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTPrescriptionOverviewSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTPrescriptionOverviewSequence &operator=(const DRTPrescriptionOverviewSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index d47d64b7058c40ee925427ff13fede7ba0765fd5..cd14f965170cbf9af6194ef528f3294542239ce2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtics.h"    // for InstitutionCodeSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtpics.h"   // for PersonIdentificationCodeSequence
 
 
@@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
          */
         OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
 
+        /** get InstitutionalDepartmentName (0008,1040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
+
         /** get PersonAddress (0040,1102)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
         const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const
             { return InstitutionCodeSequence; }
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get PersonIdentificationCodeSequence (0040,1101)
          *  @return reference to sequence element
          */
@@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
          */
         OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
 
+        /** set InstitutionalDepartmentName (0008,1040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonAddress (0040,1102)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
         DRTInstitutionCodeSequence InstitutionCodeSequence;
         /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C
         DcmLongString InstitutionName;
+        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
+        DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// PersonAddress (0040,1102) vr=ST, vm=1, type=3
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
@@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 7cb68f858d2e300a185f33d93a49f747ef44d471..68bb6dd1d3292ad401ddc5f7630a5a4af2dab2cd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3a2f478ad8cb6eab14ea17669e99f9a0d2561e0f..a9dd030b0a5f84e93a72223b605052b13e0b6caf 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index c6d6576eb0df1991f4348a26ae332a9bcc145e96..f091f93f21b39d6e478d0467e6921664681aae97 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -456,13 +456,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSetupSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index e161103e1058882baf1effe6c400b0ea20ed7e91..734f1ecd49cd43b65ee5120beca6839ef4b76fed 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTPredecessorStructureSetSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5b52268ae2a6c9200c629fe76053d9caf04aac9a..7942742bc2ad16ace6dec14e1e4175fbd0f90d6a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -435,13 +435,13 @@ class DCMTK_DCMRT_EXPORT DRTPlannedVerificationImageSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index e8a39cc6e68cab729d562b0042244874c265481b..6d5812012b5ef23d8e7852e3c5e8933dec5b1be3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTQuantityDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -21,6 +21,7 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtccs.h"    // for ConceptCodeSequence
 #include "dcmtk/dcmrt/seq/drtcncs.h"   // for ConceptNameCodeSequence
+#include "dcmtk/dcmrt/seq/drtcims.h"   // for ContentItemModifierSequence
 #include "dcmtk/dcmrt/seq/drtmucs.h"   // for MeasurementUnitsCodeSequence
 #include "dcmtk/dcmrt/seq/drtrsos.h"   // for ReferencedSOPSequence
 
@@ -143,6 +144,13 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
          */
         OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const;
 
+        /** get ObservationStartDateTime (0040,a033)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const;
+
         /** get PersonName (0040,a123)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -218,6 +226,18 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
         const DRTConceptNameCodeSequence &getConceptNameCodeSequence() const
             { return ConceptNameCodeSequence; }
 
+        /** get ContentItemModifierSequence (0040,0441)
+         *  @return reference to sequence element
+         */
+        DRTContentItemModifierSequence &getContentItemModifierSequence()
+            { return ContentItemModifierSequence; }
+
+        /** get ContentItemModifierSequence (0040,0441)
+         *  @return const reference to sequence element
+         */
+        const DRTContentItemModifierSequence &getContentItemModifierSequence() const
+            { return ContentItemModifierSequence; }
+
         /** get MeasurementUnitsCodeSequence (0040,08ea)
          *  @return reference to sequence element
          */
@@ -279,6 +299,13 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
          */
         OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ObservationStartDateTime (0040,a033)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonName (0040,a123)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
@@ -337,6 +364,8 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
         DRTConceptCodeSequence ConceptCodeSequence;
         /// ConceptNameCodeSequence (0040,a043) vr=SQ, vm=1, type=1
         DRTConceptNameCodeSequence ConceptNameCodeSequence;
+        /// ContentItemModifierSequence (0040,0441) vr=SQ, vm=1, type=3
+        DRTContentItemModifierSequence ContentItemModifierSequence;
         /// Date (0040,a121) vr=DA, vm=1, type=1C
         DcmDate Date;
         /// DateTime (0040,a120) vr=DT, vm=1, type=1C
@@ -349,6 +378,8 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
         DcmDecimalString NumericValue;
         /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3
         DcmDateTime ObservationDateTime;
+        /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3
+        DcmDateTime ObservationStartDateTime;
         /// PersonName (0040,a123) vr=PN, vm=1, type=1C
         DcmPersonName PersonName;
         /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C
@@ -474,13 +505,13 @@ class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3702cf0c5970a2116117964d03ec236aaaec9a2c..ccd9b3c420fcf9aa662aa4f7edf528fa3ee5a441 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -396,13 +396,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestAttributesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas1.h
new file mode 100644 (file)
index 0000000..94ecd32
--- /dev/null
@@ -0,0 +1,311 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRBAS1_H
+#define DRTRBAS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTDoseModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedBrachyApplicationSetupNumber (300c,000c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedBrachyApplicationSetupNumber (300c,000c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedBrachyApplicationSetupNumber (300c,000c)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedBrachyApplicationSetupNumber (300c,000c) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedBrachyApplicationSetupNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 0a0c3a71cedaf3c18c3bdd2f63635c3025a3e0c0..7d23e3b72ced68779e9e6c7663a3e7ca8200946a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
+ *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -21,9 +21,9 @@
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 
 
-/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTDoseModule
+/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTFractionSchemeModule
  */
-class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
+class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
   : protected DRTTypes
 {
 
@@ -91,6 +91,40 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
 
       // --- get DICOM attribute values ---
 
+        /** get BrachyApplicationSetupDose (300a,00a4)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBrachyApplicationSetupDose(OFString &value, const signed long pos = 0) const;
+
+        /** get BrachyApplicationSetupDose (300a,00a4)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos = 0) const;
+
+        /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFVector<Float64> &value) const;
+
         /** get ReferencedBrachyApplicationSetupNumber (300c,000c)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -105,8 +139,29 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
          */
         OFCondition getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+        /** get ReferencedDoseReferenceUID (300a,0083)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const;
+
       // --- set DICOM attribute values ---
 
+        /** set BrachyApplicationSetupDose (300a,00a4)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBrachyApplicationSetupDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (3) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue);
+
         /** set ReferencedBrachyApplicationSetupNumber (300c,000c)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -114,13 +169,26 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
          */
         OFCondition setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ReferencedDoseReferenceUID (300a,0083)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// BrachyApplicationSetupDose (300a,00a4) vr=DS, vm=1, type=3
+        DcmDecimalString BrachyApplicationSetupDose;
+        /// BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) vr=DS, vm=3, type=3
+        DcmDecimalString BrachyApplicationSetupDoseSpecificationPoint;
         /// ReferencedBrachyApplicationSetupNumber (300c,000c) vr=IS, vm=1, type=1
         DcmIntegerString ReferencedBrachyApplicationSetupNumber;
+        /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ReferencedDoseReferenceUID;
 
     };
 
@@ -129,22 +197,22 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse);
+    DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy);
+    DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy);
 
     /** destructor
      */
-    virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule();
+    virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule();
 
     /** assignment operator
      *  @param copy sequence object to be copied
      *  @return reference to this object
      */
-    DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy);
+    DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy);
 
   // --- general methods ---
 
@@ -230,13 +298,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTDoseModu
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
deleted file mode 100644 (file)
index 86b7f2e..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRBAS8_H
-#define DRTRBAS8_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedBrachyApplicationSetupSequence (300c,000a) in RTFractionSchemeModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get BrachyApplicationSetupDose (300a,00a4)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBrachyApplicationSetupDose(OFString &value, const signed long pos = 0) const;
-
-        /** get BrachyApplicationSetupDose (300a,00a4)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos = 0) const;
-
-        /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBrachyApplicationSetupDoseSpecificationPoint(OFVector<Float64> &value) const;
-
-        /** get ReferencedBrachyApplicationSetupNumber (300c,000c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedBrachyApplicationSetupNumber (300c,000c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set BrachyApplicationSetupDose (300a,00a4)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBrachyApplicationSetupDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BrachyApplicationSetupDoseSpecificationPoint (300a,00a2)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (3) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedBrachyApplicationSetupNumber (300c,000c)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// BrachyApplicationSetupDose (300a,00a4) vr=DS, vm=1, type=3
-        DcmDecimalString BrachyApplicationSetupDose;
-        /// BrachyApplicationSetupDoseSpecificationPoint (300a,00a2) vr=DS, vm=3, type=3
-        DcmDecimalString BrachyApplicationSetupDoseSpecificationPoint;
-        /// ReferencedBrachyApplicationSetupNumber (300c,000c) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedBrachyApplicationSetupNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbdgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbdgs.h
new file mode 100644 (file)
index 0000000..f212a8f
--- /dev/null
@@ -0,0 +1,422 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRTBeamDelimiterGeometrySequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRBDGS_H
+#define DRTRBDGS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for RTBeamDelimiterGeometrySequence (300a,064c)
+ */
+class DCMTK_DCMRT_EXPORT DRTRTBeamDelimiterGeometrySequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CenterOfCircularOutline (0018,1635)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCenterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DiameterOfCircularOutline (0018,1636)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDiameterOfCircularOutline(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get NumberOfPolygonalVertices (0018,1637)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineLeftVerticalEdge (0018,1631)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineLowerHorizontalEdge (0018,1634)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineRightVerticalEdge (0018,1632)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OutlineShapeType (0018,1630)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineShapeType(OFString &value, const signed long pos = 0) const;
+
+        /** get OutlineUpperHorizontalEdge (0018,1633)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set CenterOfCircularOutline (0018,1635)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=2
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCenterOfCircularOutline(const Float64 value, const unsigned long pos = 0);
+
+        /** set DiameterOfCircularOutline (0018,1636)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDiameterOfCircularOutline(const Float64 value, const unsigned long pos = 0);
+
+        /** set NumberOfPolygonalVertices (0018,1637)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos = 0);
+
+        /** set OutlineLeftVerticalEdge (0018,1631)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos = 0);
+
+        /** set OutlineLowerHorizontalEdge (0018,1634)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos = 0);
+
+        /** set OutlineRightVerticalEdge (0018,1632)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos = 0);
+
+        /** set OutlineShapeType (0018,1630)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineShapeType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set OutlineUpperHorizontalEdge (0018,1633)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos = 0);
+
+      // --- all other attributes (without get/set methods) ---
+
+        // - VerticesOfThePolygonalOutline (0018,1638)
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CenterOfCircularOutline (0018,1635) vr=FD, vm=2, type=1C
+        DcmFloatingPointDouble CenterOfCircularOutline;
+        /// DiameterOfCircularOutline (0018,1636) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble DiameterOfCircularOutline;
+        /// NumberOfPolygonalVertices (0018,1637) vr=UL, vm=1, type=1C
+        DcmUnsignedLong NumberOfPolygonalVertices;
+        /// OutlineLeftVerticalEdge (0018,1631) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineLeftVerticalEdge;
+        /// OutlineLowerHorizontalEdge (0018,1634) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineLowerHorizontalEdge;
+        /// OutlineRightVerticalEdge (0018,1632) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineRightVerticalEdge;
+        /// OutlineShapeType (0018,1630) vr=CS, vm=1, type=1
+        DcmCodeString OutlineShapeType;
+        /// OutlineUpperHorizontalEdge (0018,1633) vr=FD, vm=1, type=1C
+        DcmFloatingPointDouble OutlineUpperHorizontalEdge;
+        /// VerticesOfThePolygonalOutline (0018,1638) vr=OF, vm=1, type=1C
+        DcmOtherFloat VerticesOfThePolygonalOutline;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRTBeamDelimiterGeometrySequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRTBeamDelimiterGeometrySequence(const DRTRTBeamDelimiterGeometrySequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRTBeamDelimiterGeometrySequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRTBeamDelimiterGeometrySequence &operator=(const DRTRTBeamDelimiterGeometrySequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index e7e85fa35d13089cad281ac40ed9e20908c4caeb..d6023176c53652c2ab69dd4c4d66c42ee2d25ba7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -19,6 +19,7 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtrbss.h"   // for RecordedBlockSlabSequence
 
 
 /** Interface class for RecordedBlockSequence (3008,00d0)
@@ -112,6 +113,20 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
          */
         OFCondition getBlockTrayID(OFString &value, const signed long pos = 0) const;
 
+        /** get NumberOfBlockSlabItems (300a,0440)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfBlockSlabItems(OFString &value, const signed long pos = 0) const;
+
+        /** get NumberOfBlockSlabItems (300a,0440)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos = 0) const;
+
         /** get ReferencedBlockNumber (300c,00e0)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -126,6 +141,20 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
          */
         OFCondition getReferencedBlockNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+      // --- get DICOM sequence attributes ---
+
+        /** get RecordedBlockSlabSequence (3008,00d1)
+         *  @return reference to sequence element
+         */
+        DRTRecordedBlockSlabSequence &getRecordedBlockSlabSequence()
+            { return RecordedBlockSlabSequence; }
+
+        /** get RecordedBlockSlabSequence (3008,00d1)
+         *  @return const reference to sequence element
+         */
+        const DRTRecordedBlockSlabSequence &getRecordedBlockSlabSequence() const
+            { return RecordedBlockSlabSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set AccessoryCode (300a,00f9)
@@ -149,6 +178,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
          */
         OFCondition setBlockTrayID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set NumberOfBlockSlabItems (300a,0440)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfBlockSlabItems(const OFString &value, const OFBool check = OFTrue);
+
         /** set ReferencedBlockNumber (300c,00e0)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -167,6 +203,10 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
         DcmLongString BlockName;
         /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3
         DcmShortString BlockTrayID;
+        /// NumberOfBlockSlabItems (300a,0440) vr=IS, vm=1, type=3
+        DcmIntegerString NumberOfBlockSlabItems;
+        /// RecordedBlockSlabSequence (3008,00d1) vr=SQ, vm=1, type=1C
+        DRTRecordedBlockSlabSequence RecordedBlockSlabSequence;
         /// ReferencedBlockNumber (300c,00e0) vr=IS, vm=1, type=1
         DcmIntegerString ReferencedBlockNumber;
 
@@ -278,13 +318,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedBlockSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index c2a1394021f03d4c36894d6bba3d031450e5160d..d2169ad3ee1e7d4a466f42c778a29b1598016fb5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -278,13 +278,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTBeamsModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos2.h
new file mode 100644 (file)
index 0000000..eb9fa90
--- /dev/null
@@ -0,0 +1,327 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRBOS2_H
+#define DRTRBOS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedROINumber (3006,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedROINumber (3006,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedROINumber (3006,0084)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedROINumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedBolusSequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedBolusSequenceInRTIonBeamsModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos3.h
new file mode 100644 (file)
index 0000000..4a4d742
--- /dev/null
@@ -0,0 +1,327 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRBOS3_H
+#define DRTRBOS3_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsSessionRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedROINumber (3006,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedROINumber (3006,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedROINumber (3006,0084)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedROINumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
deleted file mode 100644 (file)
index 469ddc4..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRBOS6_H
-#define DRTRBOS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedROINumber (3006,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedROINumber (3006,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedROINumber (3006,0084)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedROINumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedBolusSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedBolusSequenceInRTIonBeamsModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
deleted file mode 100644 (file)
index 011a0b3..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRBOS7_H
-#define DRTRBOS7_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedBolusSequence (300c,00b0) in RTIonBeamsSessionRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AccessoryCode (300a,00f9)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedROINumber (3006,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedROINumber (3006,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AccessoryCode (300a,00f9)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedROINumber (3006,0084)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
-        DcmLongString AccessoryCode;
-        /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedROINumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs1.h
new file mode 100644 (file)
index 0000000..018b87f
--- /dev/null
@@ -0,0 +1,328 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedBeamSequenceInRTDoseModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRBS1_H
+#define DRTRBS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtrcps.h"   // for ReferencedControlPointSequence
+
+
+/** Interface class for ReferencedBeamSequence (300c,0004) in RTDoseModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedBeamNumber (300c,0006)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedBeamNumber (300c,0006)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ReferencedControlPointSequence (300c,00f2)
+         *  @return reference to sequence element
+         */
+        DRTReferencedControlPointSequence &getReferencedControlPointSequence()
+            { return ReferencedControlPointSequence; }
+
+        /** get ReferencedControlPointSequence (300c,00f2)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedControlPointSequence &getReferencedControlPointSequence() const
+            { return ReferencedControlPointSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedBeamNumber (300c,0006)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedBeamNumber;
+        /// ReferencedControlPointSequence (300c,00f2) vr=SQ, vm=1, type=1C
+        DRTReferencedControlPointSequence ReferencedControlPointSequence;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedBeamSequenceInRTDoseModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedBeamSequenceInRTDoseModule &operator=(const DRTReferencedBeamSequenceInRTDoseModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index e3631a5ab9cdf0c2642a2d577a6ca3128e2b3bb5..e6833308562d999faef96ef3a8c629821e001dcf 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTReferencedBeamSequenceInRTDoseModule
+ *  Header file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtrcps.h"   // for ReferencedControlPointSequence
+#include "dcmtk/dcmrt/seq/drtdccs.h"   // for DoseCalibrationConditionsSequence
+#include "dcmtk/dcmrt/seq/drtrdcks.h"  // for RadiationDeviceConfigurationAndCommissioningKeySequence
 
 
-/** Interface class for ReferencedBeamSequence (300c,0004) in RTDoseModule
+/** Interface class for ReferencedBeamSequence (300c,0004) in RTGeneralTreatmentRecordModule
  */
-class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
+class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
   : protected DRTTypes
 {
 
@@ -92,6 +93,76 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
 
       // --- get DICOM attribute values ---
 
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const;
+
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get AlternateBeamDoseType (300a,0092)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamDeliveryDurationLimit (300a,00c5)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BeamDose (300a,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDose(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamDose (300a,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BeamDoseType (300a,0090)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamMeterset (300a,0086)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamMeterset (300a,0086)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DoseCalibrationConditionsVerifiedFlag (300c,0123)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos = 0) const;
+
         /** get ReferencedBeamNumber (300c,0006)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -106,22 +177,90 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
          */
         OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const;
 
+        /** get ReferencedDoseReferenceUID (300a,0083)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
-        /** get ReferencedControlPointSequence (300c,00f2)
+        /** get DoseCalibrationConditionsSequence (300c,0120)
          *  @return reference to sequence element
          */
-        DRTReferencedControlPointSequence &getReferencedControlPointSequence()
-            { return ReferencedControlPointSequence; }
+        DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence()
+            { return DoseCalibrationConditionsSequence; }
 
-        /** get ReferencedControlPointSequence (300c,00f2)
+        /** get DoseCalibrationConditionsSequence (300c,0120)
          *  @return const reference to sequence element
          */
-        const DRTReferencedControlPointSequence &getReferencedControlPointSequence() const
-            { return ReferencedControlPointSequence; }
+        const DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence() const
+            { return DoseCalibrationConditionsSequence; }
+
+        /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a)
+         *  @return reference to sequence element
+         */
+        DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence()
+            { return RadiationDeviceConfigurationAndCommissioningKeySequence; }
+
+        /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a)
+         *  @return const reference to sequence element
+         */
+        const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence() const
+            { return RadiationDeviceConfigurationAndCommissioningKeySequence; }
 
       // --- set DICOM attribute values ---
 
+        /** set AlternateBeamDose (300a,0091)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlternateBeamDoseType (300a,0092)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BeamDeliveryDurationLimit (300a,00c5)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0);
+
+        /** set BeamDose (300a,0084)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BeamDoseType (300a,0090)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BeamMeterset (300a,0086)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DoseCalibrationConditionsVerifiedFlag (300c,0123)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check = OFTrue);
+
         /** set ReferencedBeamNumber (300c,0006)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
@@ -129,15 +268,40 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
          */
         OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ReferencedDoseReferenceUID (300a,0083)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3
+        DcmDecimalString AlternateBeamDose;
+        /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C
+        DcmCodeString AlternateBeamDoseType;
+        /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3
+        DcmFloatingPointDouble BeamDeliveryDurationLimit;
+        /// BeamDose (300a,0084) vr=DS, vm=1, type=3
+        DcmDecimalString BeamDose;
+        /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C
+        DcmCodeString BeamDoseType;
+        /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3
+        DcmDecimalString BeamMeterset;
+        /// DoseCalibrationConditionsSequence (300c,0120) vr=SQ, vm=1, type=1C
+        DRTDoseCalibrationConditionsSequence DoseCalibrationConditionsSequence;
+        /// DoseCalibrationConditionsVerifiedFlag (300c,0123) vr=CS, vm=1, type=3
+        DcmCodeString DoseCalibrationConditionsVerifiedFlag;
+        /// RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) vr=SQ, vm=1, type=1C
+        DRTRadiationDeviceConfigurationAndCommissioningKeySequence RadiationDeviceConfigurationAndCommissioningKeySequence;
         /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1
         DcmIntegerString ReferencedBeamNumber;
-        /// ReferencedControlPointSequence (300c,00f2) vr=SQ, vm=1, type=1C
-        DRTReferencedControlPointSequence ReferencedControlPointSequence;
+        /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ReferencedDoseReferenceUID;
 
     };
 
@@ -146,22 +310,22 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse);
+    DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule &copy);
+    DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy);
 
     /** destructor
      */
-    virtual ~DRTReferencedBeamSequenceInRTDoseModule();
+    virtual ~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule();
 
     /** assignment operator
      *  @param copy sequence object to be copied
      *  @return reference to this object
      */
-    DRTReferencedBeamSequenceInRTDoseModule &operator=(const DRTReferencedBeamSequenceInRTDoseModule &copy);
+    DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy);
 
   // --- general methods ---
 
@@ -247,13 +411,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTDoseModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs3.h
new file mode 100644 (file)
index 0000000..26e399c
--- /dev/null
@@ -0,0 +1,492 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRBS3_H
+#define DRTRBS3_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtdccs.h"   // for DoseCalibrationConditionsSequence
+#include "dcmtk/dcmrt/seq/drtrdcks.h"  // for RadiationDeviceConfigurationAndCommissioningKeySequence
+
+
+/** Interface class for ReferencedBeamSequence (300c,0004) in RTFractionSchemeModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const;
+
+        /** get AlternateBeamDose (300a,0091)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get AlternateBeamDoseType (300a,0092)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamDeliveryDurationLimit (300a,00c5)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BeamDose (300a,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDose(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamDose (300a,0084)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get BeamDoseType (300a,0090)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamMeterset (300a,0086)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const;
+
+        /** get BeamMeterset (300a,0086)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DoseCalibrationConditionsVerifiedFlag (300c,0123)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedBeamNumber (300c,0006)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedBeamNumber (300c,0006)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedDoseReferenceUID (300a,0083)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get DoseCalibrationConditionsSequence (300c,0120)
+         *  @return reference to sequence element
+         */
+        DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence()
+            { return DoseCalibrationConditionsSequence; }
+
+        /** get DoseCalibrationConditionsSequence (300c,0120)
+         *  @return const reference to sequence element
+         */
+        const DRTDoseCalibrationConditionsSequence &getDoseCalibrationConditionsSequence() const
+            { return DoseCalibrationConditionsSequence; }
+
+        /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a)
+         *  @return reference to sequence element
+         */
+        DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence()
+            { return RadiationDeviceConfigurationAndCommissioningKeySequence; }
+
+        /** get RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a)
+         *  @return const reference to sequence element
+         */
+        const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &getRadiationDeviceConfigurationAndCommissioningKeySequence() const
+            { return RadiationDeviceConfigurationAndCommissioningKeySequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set AlternateBeamDose (300a,0091)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlternateBeamDoseType (300a,0092)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BeamDeliveryDurationLimit (300a,00c5)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0);
+
+        /** set BeamDose (300a,0084)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BeamDoseType (300a,0090)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BeamMeterset (300a,0086)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DoseCalibrationConditionsVerifiedFlag (300c,0123)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedBeamNumber (300c,0006)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedDoseReferenceUID (300a,0083)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3
+        DcmDecimalString AlternateBeamDose;
+        /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C
+        DcmCodeString AlternateBeamDoseType;
+        /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3
+        DcmFloatingPointDouble BeamDeliveryDurationLimit;
+        /// BeamDose (300a,0084) vr=DS, vm=1, type=3
+        DcmDecimalString BeamDose;
+        /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C
+        DcmCodeString BeamDoseType;
+        /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3
+        DcmDecimalString BeamMeterset;
+        /// DoseCalibrationConditionsSequence (300c,0120) vr=SQ, vm=1, type=1C
+        DRTDoseCalibrationConditionsSequence DoseCalibrationConditionsSequence;
+        /// DoseCalibrationConditionsVerifiedFlag (300c,0123) vr=CS, vm=1, type=3
+        DcmCodeString DoseCalibrationConditionsVerifiedFlag;
+        /// RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a) vr=SQ, vm=1, type=1C
+        DRTRadiationDeviceConfigurationAndCommissioningKeySequence RadiationDeviceConfigurationAndCommissioningKeySequence;
+        /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedBeamNumber;
+        /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ReferencedDoseReferenceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedBeamSequenceInRTFractionSchemeModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedBeamSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
deleted file mode 100644 (file)
index 8e7320c..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRBS4_H
-#define DRTRBS4_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedBeamSequence (300c,0004) in RTGeneralTreatmentRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AlternateBeamDose (300a,0091)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const;
-
-        /** get AlternateBeamDose (300a,0091)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get AlternateBeamDoseType (300a,0092)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamDeliveryDurationLimit (300a,00c5)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BeamDose (300a,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDose(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamDose (300a,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseSpecificationPoint(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseSpecificationPoint(OFVector<Float64> &value) const;
-
-        /** get BeamDoseType (300a,0090)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamMeterset (300a,0086)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamMeterset (300a,0086)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedBeamNumber (300c,0006)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedBeamNumber (300c,0006)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedDoseReferenceUID (300a,0083)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AlternateBeamDose (300a,0091)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set AlternateBeamDoseType (300a,0092)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamDeliveryDurationLimit (300a,00c5)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0);
-
-        /** set BeamDose (300a,0084)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (3) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamDoseType (300a,0090)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamMeterset (300a,0086)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedBeamNumber (300c,0006)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedDoseReferenceUID (300a,0083)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3
-        DcmDecimalString AlternateBeamDose;
-        /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C
-        DcmCodeString AlternateBeamDoseType;
-        /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3
-        DcmFloatingPointDouble BeamDeliveryDurationLimit;
-        /// BeamDose (300a,0084) vr=DS, vm=1, type=3
-        DcmDecimalString BeamDose;
-        /// BeamDoseSpecificationPoint (300a,0082) vr=DS, vm=3, type=3
-        DcmDecimalString BeamDoseSpecificationPoint;
-        /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C
-        DcmCodeString BeamDoseType;
-        /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3
-        DcmDecimalString BeamMeterset;
-        /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedBeamNumber;
-        /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3
-        DcmUniqueIdentifier ReferencedDoseReferenceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
deleted file mode 100644 (file)
index 42305d9..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRBS8_H
-#define DRTRBS8_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedBeamSequence (300c,0004) in RTFractionSchemeModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedBeamSequenceInRTFractionSchemeModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get AlternateBeamDose (300a,0091)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAlternateBeamDose(OFString &value, const signed long pos = 0) const;
-
-        /** get AlternateBeamDose (300a,0091)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAlternateBeamDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get AlternateBeamDoseType (300a,0092)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getAlternateBeamDoseType(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamDeliveryDurationLimit (300a,00c5)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BeamDose (300a,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDose(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamDose (300a,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseSpecificationPoint(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  reference to variable in which the value(s) should be stored
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseSpecificationPoint(OFVector<Float64> &value) const;
-
-        /** get BeamDoseType (300a,0090)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamDoseType(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamMeterset (300a,0086)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamMeterset(OFString &value, const signed long pos = 0) const;
-
-        /** get BeamMeterset (300a,0086)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getBeamMeterset(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedBeamNumber (300c,0006)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedBeamNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedBeamNumber (300c,0006)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedBeamNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedDoseReferenceUID (300a,0083)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedDoseReferenceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set AlternateBeamDose (300a,0091)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAlternateBeamDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set AlternateBeamDoseType (300a,0092)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setAlternateBeamDoseType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamDeliveryDurationLimit (300a,00c5)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos = 0);
-
-        /** set BeamDose (300a,0084)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamDoseSpecificationPoint (300a,0082)
-         *  @param  value  value to be set (possibly multi-valued) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (3) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDoseSpecificationPoint(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamDoseType (300a,0090)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamDoseType(const OFString &value, const OFBool check = OFTrue);
-
-        /** set BeamMeterset (300a,0086)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setBeamMeterset(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedBeamNumber (300c,0006)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedBeamNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedDoseReferenceUID (300a,0083)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedDoseReferenceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// AlternateBeamDose (300a,0091) vr=DS, vm=1, type=3
-        DcmDecimalString AlternateBeamDose;
-        /// AlternateBeamDoseType (300a,0092) vr=CS, vm=1, type=1C
-        DcmCodeString AlternateBeamDoseType;
-        /// BeamDeliveryDurationLimit (300a,00c5) vr=FD, vm=1, type=3
-        DcmFloatingPointDouble BeamDeliveryDurationLimit;
-        /// BeamDose (300a,0084) vr=DS, vm=1, type=3
-        DcmDecimalString BeamDose;
-        /// BeamDoseSpecificationPoint (300a,0082) vr=DS, vm=3, type=3
-        DcmDecimalString BeamDoseSpecificationPoint;
-        /// BeamDoseType (300a,0090) vr=CS, vm=1, type=1C
-        DcmCodeString BeamDoseType;
-        /// BeamMeterset (300a,0086) vr=DS, vm=1, type=3
-        DcmDecimalString BeamMeterset;
-        /// ReferencedBeamNumber (300c,0006) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedBeamNumber;
-        /// ReferencedDoseReferenceUID (300a,0083) vr=UI, vm=1, type=3
-        DcmUniqueIdentifier ReferencedDoseReferenceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedBeamSequenceInRTFractionSchemeModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedBeamSequenceInRTFractionSchemeModule &operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbss.h
new file mode 100644 (file)
index 0000000..3871b13
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRecordedBlockSlabSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRBSS_H
+#define DRTRBSS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for RecordedBlockSlabSequence (3008,00d1)
+ */
+class DCMTK_DCMRT_EXPORT DRTRecordedBlockSlabSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AccessoryCode (300a,00f9)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
+
+        /** get BlockSlabNumber (300a,0443)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getBlockSlabNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set AccessoryCode (300a,00f9)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
+
+        /** set BlockSlabNumber (300a,0443)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockSlabNumber(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
+        DcmLongString AccessoryCode;
+        /// BlockSlabNumber (300a,0443) vr=US, vm=1, type=1
+        DcmUnsignedShort BlockSlabNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRecordedBlockSlabSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRecordedBlockSlabSequence(const DRTRecordedBlockSlabSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRecordedBlockSlabSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRecordedBlockSlabSequence &operator=(const DRTRecordedBlockSlabSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 88fc82915b24ffa4d693ab2b9a29aca9de6d41a5..43fbbad30f2f1a5722424fd9a7e00edb1e97c752 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -276,13 +276,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedCalculatedDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index d7d17bb051e69582ceeca06dbc774ab3220d7d70..29aed0d5d50ecac15b24037440c5356ab07c6349 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 7833d63498e1f94f80d320652dd8a6bcd191ab70..bdabbe0c4177b08bb3bcc6671db14f5c551b93a0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -253,13 +253,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedControlPointSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 23fbb9f39fd605f21c0a5ad8c829f0c1c3f2339b..6783e6decddccba96f7e72ee913012b8fb1dd666 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtcs.h"     // for ContourSequence
+#include "dcmtk/dcmrt/seq/drtsppcs.h"  // for SourcePixelPlanesCharacteristicsSequence
 
 
 /** Interface class for ROIContourSequence (3006,0039)
@@ -148,6 +149,18 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
         const DRTContourSequence &getContourSequence() const
             { return ContourSequence; }
 
+        /** get SourcePixelPlanesCharacteristicsSequence (3006,004a)
+         *  @return reference to sequence element
+         */
+        DRTSourcePixelPlanesCharacteristicsSequence &getSourcePixelPlanesCharacteristicsSequence()
+            { return SourcePixelPlanesCharacteristicsSequence; }
+
+        /** get SourcePixelPlanesCharacteristicsSequence (3006,004a)
+         *  @return const reference to sequence element
+         */
+        const DRTSourcePixelPlanesCharacteristicsSequence &getSourcePixelPlanesCharacteristicsSequence() const
+            { return SourcePixelPlanesCharacteristicsSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set ROIDisplayColor (3006,002a)
@@ -193,6 +206,8 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
         DcmUnsignedShort RecommendedDisplayGrayscaleValue;
         /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
         DcmIntegerString ReferencedROINumber;
+        /// SourcePixelPlanesCharacteristicsSequence (3006,004a) vr=SQ, vm=1, type=3
+        DRTSourcePixelPlanesCharacteristicsSequence SourcePixelPlanesCharacteristicsSequence;
 
     };
 
@@ -302,13 +317,13 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdais.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdais.h
new file mode 100644 (file)
index 0000000..b413110
--- /dev/null
@@ -0,0 +1,384 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTROIDerivationAlgorithmIdentificationSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRDAIS_H
+#define DRTRDAIS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtafcs.h"   // for AlgorithmFamilyCodeSequence
+#include "dcmtk/dcmrt/seq/drtancs.h"   // for AlgorithmNameCodeSequence
+
+
+/** Interface class for ROIDerivationAlgorithmIdentificationSequence (3006,0037)
+ */
+class DCMTK_DCMRT_EXPORT DRTROIDerivationAlgorithmIdentificationSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get AlgorithmName (0066,0036)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmName(OFString &value, const signed long pos = 0) const;
+
+        /** get AlgorithmParameters (0066,0032)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmParameters(OFString &value, const signed long pos = 0) const;
+
+        /** get AlgorithmSource (0024,0202)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmSource(OFString &value, const signed long pos = 0) const;
+
+        /** get AlgorithmVersion (0066,0031)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getAlgorithmVersion(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get AlgorithmFamilyCodeSequence (0066,002f)
+         *  @return reference to sequence element
+         */
+        DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence()
+            { return AlgorithmFamilyCodeSequence; }
+
+        /** get AlgorithmFamilyCodeSequence (0066,002f)
+         *  @return const reference to sequence element
+         */
+        const DRTAlgorithmFamilyCodeSequence &getAlgorithmFamilyCodeSequence() const
+            { return AlgorithmFamilyCodeSequence; }
+
+        /** get AlgorithmNameCodeSequence (0066,0030)
+         *  @return reference to sequence element
+         */
+        DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence()
+            { return AlgorithmNameCodeSequence; }
+
+        /** get AlgorithmNameCodeSequence (0066,0030)
+         *  @return const reference to sequence element
+         */
+        const DRTAlgorithmNameCodeSequence &getAlgorithmNameCodeSequence() const
+            { return AlgorithmNameCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set AlgorithmName (0066,0036)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlgorithmParameters (0066,0032)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmParameters(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlgorithmSource (0024,0202)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmSource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set AlgorithmVersion (0066,0031)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setAlgorithmVersion(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// AlgorithmFamilyCodeSequence (0066,002f) vr=SQ, vm=1, type=1
+        DRTAlgorithmFamilyCodeSequence AlgorithmFamilyCodeSequence;
+        /// AlgorithmName (0066,0036) vr=LO, vm=1, type=1
+        DcmLongString AlgorithmName;
+        /// AlgorithmNameCodeSequence (0066,0030) vr=SQ, vm=1, type=3
+        DRTAlgorithmNameCodeSequence AlgorithmNameCodeSequence;
+        /// AlgorithmParameters (0066,0032) vr=LT, vm=1, type=3
+        DcmLongText AlgorithmParameters;
+        /// AlgorithmSource (0024,0202) vr=LO, vm=1, type=3
+        DcmLongString AlgorithmSource;
+        /// AlgorithmVersion (0066,0031) vr=LO, vm=1, type=1
+        DcmLongString AlgorithmVersion;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTROIDerivationAlgorithmIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTROIDerivationAlgorithmIdentificationSequence(const DRTROIDerivationAlgorithmIdentificationSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTROIDerivationAlgorithmIdentificationSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTROIDerivationAlgorithmIdentificationSequence &operator=(const DRTROIDerivationAlgorithmIdentificationSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdcks.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdcks.h
new file mode 100644 (file)
index 0000000..e53589f
--- /dev/null
@@ -0,0 +1,571 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRadiationDeviceConfigurationAndCommissioningKeySequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRDCKS_H
+#define DRTRDCKS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtccs.h"    // for ConceptCodeSequence
+#include "dcmtk/dcmrt/seq/drtcncs.h"   // for ConceptNameCodeSequence
+#include "dcmtk/dcmrt/seq/drtmucs.h"   // for MeasurementUnitsCodeSequence
+#include "dcmtk/dcmrt/seq/drtrsos.h"   // for ReferencedSOPSequence
+
+
+/** Interface class for RadiationDeviceConfigurationAndCommissioningKeySequence (300a,065a)
+ */
+class DCMTK_DCMRT_EXPORT DRTRadiationDeviceConfigurationAndCommissioningKeySequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get Date (0040,a121)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDate(OFString &value, const signed long pos = 0) const;
+
+        /** get DateTime (0040,a120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDateTime(OFString &value, const signed long pos = 0) const;
+
+        /** get FloatingPointValue (0040,a161)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getFloatingPointValue(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get NumericValue (0040,a30a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumericValue(OFString &value, const signed long pos = 0) const;
+
+        /** get NumericValue (0040,a30a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumericValue(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get NumericValue (0040,a30a)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumericValue(OFVector<Float64> &value) const;
+
+        /** get ObservationDateTime (0040,a032)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getObservationDateTime(OFString &value, const signed long pos = 0) const;
+
+        /** get ObservationStartDateTime (0040,a033)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getObservationStartDateTime(OFString &value, const signed long pos = 0) const;
+
+        /** get PersonName (0040,a123)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPersonName(OFString &value, const signed long pos = 0) const;
+
+        /** get RationalDenominatorValue (0040,a163)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRationalDenominatorValue(Uint32 &value, const unsigned long pos = 0) const;
+
+        /** get RationalNumeratorValue (0040,a162)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRationalNumeratorValue(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get TextValue (0040,a160)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTextValue(OFString &value, const signed long pos = 0) const;
+
+        /** get Time (0040,a122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTime(OFString &value, const signed long pos = 0) const;
+
+        /** get UID (0040,a124)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ValueType (0040,a040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getValueType(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ConceptCodeSequence (0040,a168)
+         *  @return reference to sequence element
+         */
+        DRTConceptCodeSequence &getConceptCodeSequence()
+            { return ConceptCodeSequence; }
+
+        /** get ConceptCodeSequence (0040,a168)
+         *  @return const reference to sequence element
+         */
+        const DRTConceptCodeSequence &getConceptCodeSequence() const
+            { return ConceptCodeSequence; }
+
+        /** get ConceptNameCodeSequence (0040,a043)
+         *  @return reference to sequence element
+         */
+        DRTConceptNameCodeSequence &getConceptNameCodeSequence()
+            { return ConceptNameCodeSequence; }
+
+        /** get ConceptNameCodeSequence (0040,a043)
+         *  @return const reference to sequence element
+         */
+        const DRTConceptNameCodeSequence &getConceptNameCodeSequence() const
+            { return ConceptNameCodeSequence; }
+
+        /** get MeasurementUnitsCodeSequence (0040,08ea)
+         *  @return reference to sequence element
+         */
+        DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence()
+            { return MeasurementUnitsCodeSequence; }
+
+        /** get MeasurementUnitsCodeSequence (0040,08ea)
+         *  @return const reference to sequence element
+         */
+        const DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence() const
+            { return MeasurementUnitsCodeSequence; }
+
+        /** get ReferencedSOPSequence (0008,1199)
+         *  @return reference to sequence element
+         */
+        DRTReferencedSOPSequence &getReferencedSOPSequence()
+            { return ReferencedSOPSequence; }
+
+        /** get ReferencedSOPSequence (0008,1199)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedSOPSequence &getReferencedSOPSequence() const
+            { return ReferencedSOPSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set Date (0040,a121)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DA) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDate(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DateTime (0040,a120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDateTime(const OFString &value, const OFBool check = OFTrue);
+
+        /** set FloatingPointValue (0040,a161)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setFloatingPointValue(const Float64 value, const unsigned long pos = 0);
+
+        /** set NumericValue (0040,a30a)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1-n) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumericValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ObservationDateTime (0040,a032)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setObservationDateTime(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ObservationStartDateTime (0040,a033)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setObservationStartDateTime(const OFString &value, const OFBool check = OFTrue);
+
+        /** set PersonName (0040,a123)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (PN) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RationalDenominatorValue (0040,a163)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRationalDenominatorValue(const Uint32 value, const unsigned long pos = 0);
+
+        /** set RationalNumeratorValue (0040,a162)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRationalNumeratorValue(const Sint32 value, const unsigned long pos = 0);
+
+        /** set TextValue (0040,a160)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTextValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set Time (0040,a122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (TM) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTime(const OFString &value, const OFBool check = OFTrue);
+
+        /** set UID (0040,a124)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ValueType (0040,a040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setValueType(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ConceptCodeSequence (0040,a168) vr=SQ, vm=1, type=1C
+        DRTConceptCodeSequence ConceptCodeSequence;
+        /// ConceptNameCodeSequence (0040,a043) vr=SQ, vm=1, type=1
+        DRTConceptNameCodeSequence ConceptNameCodeSequence;
+        /// Date (0040,a121) vr=DA, vm=1, type=1C
+        DcmDate Date;
+        /// DateTime (0040,a120) vr=DT, vm=1, type=1C
+        DcmDateTime DateTime;
+        /// FloatingPointValue (0040,a161) vr=FD, vm=1-n, type=1C
+        DcmFloatingPointDouble FloatingPointValue;
+        /// MeasurementUnitsCodeSequence (0040,08ea) vr=SQ, vm=1, type=1C
+        DRTMeasurementUnitsCodeSequence MeasurementUnitsCodeSequence;
+        /// NumericValue (0040,a30a) vr=DS, vm=1-n, type=1C
+        DcmDecimalString NumericValue;
+        /// ObservationDateTime (0040,a032) vr=DT, vm=1, type=3
+        DcmDateTime ObservationDateTime;
+        /// ObservationStartDateTime (0040,a033) vr=DT, vm=1, type=3
+        DcmDateTime ObservationStartDateTime;
+        /// PersonName (0040,a123) vr=PN, vm=1, type=1C
+        DcmPersonName PersonName;
+        /// RationalDenominatorValue (0040,a163) vr=UL, vm=1-n, type=1C
+        DcmUnsignedLong RationalDenominatorValue;
+        /// RationalNumeratorValue (0040,a162) vr=SL, vm=1-n, type=1C
+        DcmSignedLong RationalNumeratorValue;
+        /// ReferencedSOPSequence (0008,1199) vr=SQ, vm=1, type=1C
+        DRTReferencedSOPSequence ReferencedSOPSequence;
+        /// TextValue (0040,a160) vr=UT, vm=1, type=1C
+        DcmUnlimitedText TextValue;
+        /// Time (0040,a122) vr=TM, vm=1, type=1C
+        DcmTime Time;
+        /// UID (0040,a124) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier UID;
+        /// ValueType (0040,a040) vr=CS, vm=1, type=1
+        DcmCodeString ValueType;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRadiationDeviceConfigurationAndCommissioningKeySequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRadiationDeviceConfigurationAndCommissioningKeySequence &operator=(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdps.h
new file mode 100644 (file)
index 0000000..138855e
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedDefinedProtocolSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRDPS_H
+#define DRTRDPS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedDefinedProtocolSequence (0018,990c)
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedDefinedProtocolSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceAcquisitionProtocolElementNumber (0018,9938)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get SourceReconstructionProtocolElementNumber (0018,993a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceAcquisitionProtocolElementNumber (0018,9938)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0);
+
+        /** set SourceReconstructionProtocolElementNumber (0018,993a)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+        /// SourceAcquisitionProtocolElementNumber (0018,9938) vr=US, vm=1-n, type=3
+        DcmUnsignedShort SourceAcquisitionProtocolElementNumber;
+        /// SourceReconstructionProtocolElementNumber (0018,993a) vr=US, vm=1-n, type=3
+        DcmUnsignedShort SourceReconstructionProtocolElementNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedDefinedProtocolSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedDefinedProtocolSequence(const DRTReferencedDefinedProtocolSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedDefinedProtocolSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedDefinedProtocolSequence &operator=(const DRTReferencedDefinedProtocolSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
deleted file mode 100644 (file)
index 802748d..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTRTDoseROISequence
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRDROS_H
-#define DRTRDROS_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for RTDoseROISequence (3004,0010)
- */
-class DCMTK_DCMRT_EXPORT DRTRTDoseROISequence
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get DoseUnits (3004,0002)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDoseUnits(OFString &value, const signed long pos = 0) const;
-
-        /** get DoseValue (3004,0012)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDoseValue(OFString &value, const signed long pos = 0) const;
-
-        /** get DoseValue (3004,0012)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDoseValue(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedROINumber (3006,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedROINumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedROINumber (3006,0084)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedROINumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set DoseUnits (3004,0002)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setDoseUnits(const OFString &value, const OFBool check = OFTrue);
-
-        /** set DoseValue (3004,0012)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setDoseValue(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedROINumber (3006,0084)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedROINumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// DoseUnits (3004,0002) vr=CS, vm=1, type=1
-        DcmCodeString DoseUnits;
-        /// DoseValue (3004,0012) vr=DS, vm=1, type=1
-        DcmDecimalString DoseValue;
-        /// ReferencedROINumber (3006,0084) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedROINumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTRTDoseROISequence(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTRTDoseROISequence(const DRTRTDoseROISequence &copy);
-
-    /** destructor
-     */
-    virtual ~DRTRTDoseROISequence();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTRTDoseROISequence &operator=(const DRTRTDoseROISequence &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index 4dbd16cdb7f95449042e904213173996b8661af4..a5366423647bdc76632e912c47a9188f9f272c18 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -263,13 +263,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTBeamsModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs2.h
new file mode 100644 (file)
index 0000000..2eeaa3a
--- /dev/null
@@ -0,0 +1,334 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRDRS2_H
+#define DRTRDRS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CumulativeDoseReferenceCoefficient (300a,010c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos = 0) const;
+
+        /** get CumulativeDoseReferenceCoefficient (300a,010c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedDoseReferenceNumber (300c,0051)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedDoseReferenceNumber (300c,0051)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set CumulativeDoseReferenceCoefficient (300a,010c)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedDoseReferenceNumber (300c,0051)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CumulativeDoseReferenceCoefficient (300a,010c) vr=DS, vm=1, type=2
+        DcmDecimalString CumulativeDoseReferenceCoefficient;
+        /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedDoseReferenceNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs3.h
new file mode 100644 (file)
index 0000000..58497b3
--- /dev/null
@@ -0,0 +1,564 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRDRS3_H
+#define DRTRDRS3_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTFractionSchemeModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ConstraintWeight (300a,0021)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getConstraintWeight(OFString &value, const signed long pos = 0) const;
+
+        /** get ConstraintWeight (300a,0021)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getConstraintWeight(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DeliveryMaximumDose (300a,0023)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeliveryMaximumDose(OFString &value, const signed long pos = 0) const;
+
+        /** get DeliveryMaximumDose (300a,0023)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeliveryMaximumDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get DeliveryWarningDose (300a,0022)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeliveryWarningDose(OFString &value, const signed long pos = 0) const;
+
+        /** get DeliveryWarningDose (300a,0022)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeliveryWarningDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OrganAtRiskFullVolumeDose (300a,002a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos = 0) const;
+
+        /** get OrganAtRiskFullVolumeDose (300a,002a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OrganAtRiskLimitDose (300a,002b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskLimitDose(OFString &value, const signed long pos = 0) const;
+
+        /** get OrganAtRiskLimitDose (300a,002b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OrganAtRiskMaximumDose (300a,002c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskMaximumDose(OFString &value, const signed long pos = 0) const;
+
+        /** get OrganAtRiskMaximumDose (300a,002c)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get OrganAtRiskOverdoseVolumeFraction (300a,002d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos = 0) const;
+
+        /** get OrganAtRiskOverdoseVolumeFraction (300a,002d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedDoseReferenceNumber (300c,0051)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedDoseReferenceNumber (300c,0051)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get TargetMaximumDose (300a,0027)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetMaximumDose(OFString &value, const signed long pos = 0) const;
+
+        /** get TargetMaximumDose (300a,0027)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetMaximumDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get TargetMinimumDose (300a,0025)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetMinimumDose(OFString &value, const signed long pos = 0) const;
+
+        /** get TargetMinimumDose (300a,0025)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetMinimumDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get TargetPrescriptionDose (300a,0026)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetPrescriptionDose(OFString &value, const signed long pos = 0) const;
+
+        /** get TargetPrescriptionDose (300a,0026)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetPrescriptionDose(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get TargetUnderdoseVolumeFraction (300a,0028)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos = 0) const;
+
+        /** get TargetUnderdoseVolumeFraction (300a,0028)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ConstraintWeight (300a,0021)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setConstraintWeight(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DeliveryMaximumDose (300a,0023)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeliveryMaximumDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set DeliveryWarningDose (300a,0022)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeliveryWarningDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set OrganAtRiskFullVolumeDose (300a,002a)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set OrganAtRiskLimitDose (300a,002b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOrganAtRiskLimitDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set OrganAtRiskMaximumDose (300a,002c)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOrganAtRiskMaximumDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set OrganAtRiskOverdoseVolumeFraction (300a,002d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedDoseReferenceNumber (300c,0051)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TargetMaximumDose (300a,0027)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTargetMaximumDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TargetMinimumDose (300a,0025)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTargetMinimumDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TargetPrescriptionDose (300a,0026)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTargetPrescriptionDose(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TargetUnderdoseVolumeFraction (300a,0028)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ConstraintWeight (300a,0021) vr=DS, vm=1, type=3
+        DcmDecimalString ConstraintWeight;
+        /// DeliveryMaximumDose (300a,0023) vr=DS, vm=1, type=3
+        DcmDecimalString DeliveryMaximumDose;
+        /// DeliveryWarningDose (300a,0022) vr=DS, vm=1, type=3
+        DcmDecimalString DeliveryWarningDose;
+        /// OrganAtRiskFullVolumeDose (300a,002a) vr=DS, vm=1, type=3
+        DcmDecimalString OrganAtRiskFullVolumeDose;
+        /// OrganAtRiskLimitDose (300a,002b) vr=DS, vm=1, type=3
+        DcmDecimalString OrganAtRiskLimitDose;
+        /// OrganAtRiskMaximumDose (300a,002c) vr=DS, vm=1, type=3
+        DcmDecimalString OrganAtRiskMaximumDose;
+        /// OrganAtRiskOverdoseVolumeFraction (300a,002d) vr=DS, vm=1, type=3
+        DcmDecimalString OrganAtRiskOverdoseVolumeFraction;
+        /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedDoseReferenceNumber;
+        /// TargetMaximumDose (300a,0027) vr=DS, vm=1, type=3
+        DcmDecimalString TargetMaximumDose;
+        /// TargetMinimumDose (300a,0025) vr=DS, vm=1, type=3
+        DcmDecimalString TargetMinimumDose;
+        /// TargetPrescriptionDose (300a,0026) vr=DS, vm=1, type=3
+        DcmDecimalString TargetPrescriptionDose;
+        /// TargetUnderdoseVolumeFraction (300a,0028) vr=DS, vm=1, type=3
+        DcmDecimalString TargetUnderdoseVolumeFraction;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
deleted file mode 100644 (file)
index 20892e2..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRDRS6_H
-#define DRTRDRS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get CumulativeDoseReferenceCoefficient (300a,010c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos = 0) const;
-
-        /** get CumulativeDoseReferenceCoefficient (300a,010c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedDoseReferenceNumber (300c,0051)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedDoseReferenceNumber (300c,0051)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set CumulativeDoseReferenceCoefficient (300a,010c)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedDoseReferenceNumber (300c,0051)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// CumulativeDoseReferenceCoefficient (300a,010c) vr=DS, vm=1, type=2
-        DcmDecimalString CumulativeDoseReferenceCoefficient;
-        /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedDoseReferenceNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
deleted file mode 100644 (file)
index 64ce8d7..0000000
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRDRS8_H
-#define DRTRDRS8_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedDoseReferenceSequence (300c,0050) in RTFractionSchemeModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get ConstraintWeight (300a,0021)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getConstraintWeight(OFString &value, const signed long pos = 0) const;
-
-        /** get ConstraintWeight (300a,0021)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getConstraintWeight(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get DeliveryMaximumDose (300a,0023)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDeliveryMaximumDose(OFString &value, const signed long pos = 0) const;
-
-        /** get DeliveryMaximumDose (300a,0023)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDeliveryMaximumDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get DeliveryWarningDose (300a,0022)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDeliveryWarningDose(OFString &value, const signed long pos = 0) const;
-
-        /** get DeliveryWarningDose (300a,0022)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDeliveryWarningDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get OrganAtRiskFullVolumeDose (300a,002a)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos = 0) const;
-
-        /** get OrganAtRiskFullVolumeDose (300a,002a)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get OrganAtRiskLimitDose (300a,002b)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskLimitDose(OFString &value, const signed long pos = 0) const;
-
-        /** get OrganAtRiskLimitDose (300a,002b)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get OrganAtRiskMaximumDose (300a,002c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskMaximumDose(OFString &value, const signed long pos = 0) const;
-
-        /** get OrganAtRiskMaximumDose (300a,002c)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get OrganAtRiskOverdoseVolumeFraction (300a,002d)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos = 0) const;
-
-        /** get OrganAtRiskOverdoseVolumeFraction (300a,002d)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedDoseReferenceNumber (300c,0051)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedDoseReferenceNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedDoseReferenceNumber (300c,0051)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get TargetMaximumDose (300a,0027)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetMaximumDose(OFString &value, const signed long pos = 0) const;
-
-        /** get TargetMaximumDose (300a,0027)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetMaximumDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get TargetMinimumDose (300a,0025)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetMinimumDose(OFString &value, const signed long pos = 0) const;
-
-        /** get TargetMinimumDose (300a,0025)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetMinimumDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get TargetPrescriptionDose (300a,0026)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetPrescriptionDose(OFString &value, const signed long pos = 0) const;
-
-        /** get TargetPrescriptionDose (300a,0026)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetPrescriptionDose(Float64 &value, const unsigned long pos = 0) const;
-
-        /** get TargetUnderdoseVolumeFraction (300a,0028)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos = 0) const;
-
-        /** get TargetUnderdoseVolumeFraction (300a,0028)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set ConstraintWeight (300a,0021)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setConstraintWeight(const OFString &value, const OFBool check = OFTrue);
-
-        /** set DeliveryMaximumDose (300a,0023)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setDeliveryMaximumDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set DeliveryWarningDose (300a,0022)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setDeliveryWarningDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set OrganAtRiskFullVolumeDose (300a,002a)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set OrganAtRiskLimitDose (300a,002b)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setOrganAtRiskLimitDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set OrganAtRiskMaximumDose (300a,002c)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setOrganAtRiskMaximumDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set OrganAtRiskOverdoseVolumeFraction (300a,002d)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedDoseReferenceNumber (300c,0051)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedDoseReferenceNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set TargetMaximumDose (300a,0027)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTargetMaximumDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set TargetMinimumDose (300a,0025)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTargetMinimumDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set TargetPrescriptionDose (300a,0026)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTargetPrescriptionDose(const OFString &value, const OFBool check = OFTrue);
-
-        /** set TargetUnderdoseVolumeFraction (300a,0028)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// ConstraintWeight (300a,0021) vr=DS, vm=1, type=3
-        DcmDecimalString ConstraintWeight;
-        /// DeliveryMaximumDose (300a,0023) vr=DS, vm=1, type=3
-        DcmDecimalString DeliveryMaximumDose;
-        /// DeliveryWarningDose (300a,0022) vr=DS, vm=1, type=3
-        DcmDecimalString DeliveryWarningDose;
-        /// OrganAtRiskFullVolumeDose (300a,002a) vr=DS, vm=1, type=3
-        DcmDecimalString OrganAtRiskFullVolumeDose;
-        /// OrganAtRiskLimitDose (300a,002b) vr=DS, vm=1, type=3
-        DcmDecimalString OrganAtRiskLimitDose;
-        /// OrganAtRiskMaximumDose (300a,002c) vr=DS, vm=1, type=3
-        DcmDecimalString OrganAtRiskMaximumDose;
-        /// OrganAtRiskOverdoseVolumeFraction (300a,002d) vr=DS, vm=1, type=3
-        DcmDecimalString OrganAtRiskOverdoseVolumeFraction;
-        /// ReferencedDoseReferenceNumber (300c,0051) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedDoseReferenceNumber;
-        /// TargetMaximumDose (300a,0027) vr=DS, vm=1, type=3
-        DcmDecimalString TargetMaximumDose;
-        /// TargetMinimumDose (300a,0025) vr=DS, vm=1, type=3
-        DcmDecimalString TargetMinimumDose;
-        /// TargetPrescriptionDose (300a,0026) vr=DS, vm=1, type=3
-        DcmDecimalString TargetPrescriptionDose;
-        /// TargetUnderdoseVolumeFraction (300a,0028) vr=DS, vm=1, type=3
-        DcmDecimalString TargetUnderdoseVolumeFraction;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index 3b1a8e3741f509fe26191757e6a9892c42d983f2..4954cc122c792ccbaae2a31301c52509efa368c5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedDoseSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdsis.h
new file mode 100644 (file)
index 0000000..92525bd
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedDirectSegmentInstanceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRDSIS_H
+#define DRTRDSIS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedDirectSegmentInstanceSequence (3010,004a)
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedDirectSegmentInstanceSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedDirectSegmentInstanceSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedDirectSegmentInstanceSequence(const DRTReferencedDirectSegmentInstanceSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedDirectSegmentInstanceSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedDirectSegmentInstanceSequence &operator=(const DRTReferencedDirectSegmentInstanceSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 46468c5aded485907ee0bb4669905b5276bd6368..aa20101a155777badac96942cb8843fd1392981b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTROIElementalCompositionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3bf654b1faa1dcc6e8a872ec3dfbeb19f3d83cb0..6cd2ada9ccd046611a764029a60fbbedcc8f6301 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -19,8 +19,8 @@
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtrbs2.h"   // for ReferencedBeamSequence
-#include "dcmtk/dcmrt/seq/drtrbas2.h"  // for ReferencedBrachyApplicationSetupSequence
+#include "dcmtk/dcmrt/seq/drtrbs1.h"   // for ReferencedBeamSequence
+#include "dcmtk/dcmrt/seq/drtrbas1.h"  // for ReferencedBrachyApplicationSetupSequence
 
 
 /** Interface class for ReferencedFractionGroupSequence (300c,0020) in RTDoseModule
@@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFractionGroupSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index e79462bea83fcc9ede8f352c95a6c8a5e2e5a66d..60932adb801405174cc618d8586d1ab5c9813a3d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedFrameOfReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 4aab4d8621c3bbdce0dc135a286157eb5b07c810..d70de522431137743c513a10a7f9cc92daba76f6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index df138dcd3a65148ceeb15822e30f26c8baa0ab2b..f229d4a409aaf1c17c0eb5c7b4e6c30700d41d98 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -295,13 +295,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedImageSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a4cea7eb62d957b9201fcb7de7faba1cec533b73..3195cd26b8ebbb1d537b30d61b22c86c67b47205 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedInstanceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a5bc9239ba4c9443305fc4378b363ef2a11f74a1..acde185fb8c3ff5175d4e46607ace57e80b5c8bc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedLateralSpreadingDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 7d889d2c61ed168e04ae74811189eba3ab50304c..0e2f1e3318aa255fd83651935e8d8e67e47fc0d4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -276,13 +276,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedMeasuredDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index d709af574a6e84f0d27c25210fbd14d2a66e87cd..9da9a1364a4d30c35a991ea4cfdd695cc20bbdf5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -310,13 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeModulatorSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss1.h
new file mode 100644 (file)
index 0000000..127aeff
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRMSS1_H
+#define DRTRMSS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get IsocenterToRangeModulatorDistance (300a,038a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get RangeModulatorGatingStartValue (300a,0382)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get RangeModulatorGatingStartWaterEquivalentThickness (300a,0386)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get RangeModulatorGatingStopValue (300a,0384)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get RangeModulatorGatingStopWaterEquivalentThickness (300a,0388)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedRangeModulatorNumber (300c,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedRangeModulatorNumber (300c,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set IsocenterToRangeModulatorDistance (300a,038a)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos = 0);
+
+        /** set RangeModulatorGatingStartValue (300a,0382)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0);
+
+        /** set RangeModulatorGatingStartWaterEquivalentThickness (300a,0386)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
+
+        /** set RangeModulatorGatingStopValue (300a,0384)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0);
+
+        /** set RangeModulatorGatingStopWaterEquivalentThickness (300a,0388)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
+
+        /** set ReferencedRangeModulatorNumber (300c,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// IsocenterToRangeModulatorDistance (300a,038a) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle IsocenterToRangeModulatorDistance;
+        /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C
+        DcmFloatingPointSingle RangeModulatorGatingStartValue;
+        /// RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle RangeModulatorGatingStartWaterEquivalentThickness;
+        /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C
+        DcmFloatingPointSingle RangeModulatorGatingStopValue;
+        /// RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle RangeModulatorGatingStopWaterEquivalentThickness;
+        /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedRangeModulatorNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss2.h
new file mode 100644 (file)
index 0000000..6bc12e3
--- /dev/null
@@ -0,0 +1,343 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRMSS2_H
+#define DRTRMSS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsSessionRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get RangeModulatorGatingStartValue (300a,0382)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get RangeModulatorGatingStopValue (300a,0384)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedRangeModulatorNumber (300c,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedRangeModulatorNumber (300c,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set RangeModulatorGatingStartValue (300a,0382)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0);
+
+        /** set RangeModulatorGatingStopValue (300a,0384)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0);
+
+        /** set ReferencedRangeModulatorNumber (300c,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C
+        DcmFloatingPointSingle RangeModulatorGatingStartValue;
+        /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C
+        DcmFloatingPointSingle RangeModulatorGatingStopValue;
+        /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedRangeModulatorNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
deleted file mode 100644 (file)
index cd446b1..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRMSS6_H
-#define DRTRMSS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get IsocenterToRangeModulatorDistance (300a,038a)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get RangeModulatorGatingStartValue (300a,0382)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get RangeModulatorGatingStartWaterEquivalentThickness (300a,0386)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get RangeModulatorGatingStopValue (300a,0384)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get RangeModulatorGatingStopWaterEquivalentThickness (300a,0388)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedRangeModulatorNumber (300c,0104)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedRangeModulatorNumber (300c,0104)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set IsocenterToRangeModulatorDistance (300a,038a)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos = 0);
-
-        /** set RangeModulatorGatingStartValue (300a,0382)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0);
-
-        /** set RangeModulatorGatingStartWaterEquivalentThickness (300a,0386)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
-
-        /** set RangeModulatorGatingStopValue (300a,0384)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0);
-
-        /** set RangeModulatorGatingStopWaterEquivalentThickness (300a,0388)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
-
-        /** set ReferencedRangeModulatorNumber (300c,0104)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// IsocenterToRangeModulatorDistance (300a,038a) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle IsocenterToRangeModulatorDistance;
-        /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C
-        DcmFloatingPointSingle RangeModulatorGatingStartValue;
-        /// RangeModulatorGatingStartWaterEquivalentThickness (300a,0386) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle RangeModulatorGatingStartWaterEquivalentThickness;
-        /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C
-        DcmFloatingPointSingle RangeModulatorGatingStopValue;
-        /// RangeModulatorGatingStopWaterEquivalentThickness (300a,0388) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle RangeModulatorGatingStopWaterEquivalentThickness;
-        /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedRangeModulatorNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
deleted file mode 100644 (file)
index d868d06..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRMSS7_H
-#define DRTRMSS7_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for RangeModulatorSettingsSequence (300a,0380) in RTIonBeamsSessionRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get RangeModulatorGatingStartValue (300a,0382)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get RangeModulatorGatingStopValue (300a,0384)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedRangeModulatorNumber (300c,0104)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeModulatorNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedRangeModulatorNumber (300c,0104)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set RangeModulatorGatingStartValue (300a,0382)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos = 0);
-
-        /** set RangeModulatorGatingStopValue (300a,0384)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos = 0);
-
-        /** set ReferencedRangeModulatorNumber (300c,0104)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedRangeModulatorNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// RangeModulatorGatingStartValue (300a,0382) vr=FL, vm=1, type=1C
-        DcmFloatingPointSingle RangeModulatorGatingStartValue;
-        /// RangeModulatorGatingStopValue (300a,0384) vr=FL, vm=1, type=1C
-        DcmFloatingPointSingle RangeModulatorGatingStopValue;
-        /// ReferencedRangeModulatorNumber (300c,0104) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedRangeModulatorNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index 584e3e0499e8564ff0458be8151b9306903af4f5..07dfeca4678d07cf7910c83dae77e39c399d5459 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 79aad15efd2287c1df052921f5a01a7456339ace..9f1c122393b663bea3acfef83409c11fe6dc271b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -20,6 +20,7 @@
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
 #include "dcmtk/dcmrt/seq/drtics.h"    // for InstitutionCodeSequence
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
 #include "dcmtk/dcmrt/seq/drtpics.h"   // for PersonIdentificationCodeSequence
 
 
@@ -107,6 +108,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
          */
         OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
 
+        /** get InstitutionalDepartmentName (0008,1040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
+
         /** get PersonAddress (0040,1102)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -142,6 +150,18 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
         const DRTInstitutionCodeSequence &getInstitutionCodeSequence() const
             { return InstitutionCodeSequence; }
 
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
         /** get PersonIdentificationCodeSequence (0040,1101)
          *  @return reference to sequence element
          */
@@ -170,6 +190,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
          */
         OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
 
+        /** set InstitutionalDepartmentName (0008,1040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonAddress (0040,1102)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
@@ -202,6 +229,10 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
         DRTInstitutionCodeSequence InstitutionCodeSequence;
         /// InstitutionName (0008,0080) vr=LO, vm=1, type=1C
         DcmLongString InstitutionName;
+        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
+        DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
         /// PersonAddress (0040,1102) vr=ST, vm=1, type=3
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
@@ -319,13 +350,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 722834078e88ebb37f35d850c36aff3e32105961..165d838ca6775366195d998de2109370b8c66d5d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index dd66646b8b2e1ca6799bbdc407fac751b88f42d5..41b325d96e8d6410e57c906b9bf63ac79b9b9668 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -347,13 +347,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpprs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpprs.h
new file mode 100644 (file)
index 0000000..180ea61
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedPerformedProtocolSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRPPRS_H
+#define DRTRPPRS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedPerformedProtocolSequence (0018,990d)
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProtocolSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get SourceAcquisitionProtocolElementNumber (0018,9938)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get SourceReconstructionProtocolElementNumber (0018,993a)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set SourceAcquisitionProtocolElementNumber (0018,9938)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0);
+
+        /** set SourceReconstructionProtocolElementNumber (0018,993a)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1-n
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos = 0);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+        /// SourceAcquisitionProtocolElementNumber (0018,9938) vr=US, vm=1-n, type=3
+        DcmUnsignedShort SourceAcquisitionProtocolElementNumber;
+        /// SourceReconstructionProtocolElementNumber (0018,993a) vr=US, vm=1-n, type=3
+        DcmUnsignedShort SourceReconstructionProtocolElementNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedPerformedProtocolSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedPerformedProtocolSequence(const DRTReferencedPerformedProtocolSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedPerformedProtocolSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedPerformedProtocolSequence &operator=(const DRTReferencedPerformedProtocolSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 5941a2d6be40740c7aabd05c9bd37a9f2a360495..f00adaf107d1b4919c33f2c2d9733714e8559344 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -263,13 +263,13 @@ class DCMTK_DCMRT_EXPORT DRTROIPhysicalPropertiesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a6dcfcb8e49f1e54f37e16ad2c4401a0e3cce153..b9bb802c9581e0089ab59e94b27c750dc569c036 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPerformedProcedureStepSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5f476cf79831353c2087ac5c6d6867b9aa4bd67d..53be77561c01c7e4f515089036f97485d40cb06b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5c11b0d4c8bad1a90a4ba89091efe47838e7a96e..54b2dd8be4dfdb837a5193a7d6270289e8cd3ce1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -308,13 +308,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBeamsModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris2.h
new file mode 100644 (file)
index 0000000..e31ee55
--- /dev/null
@@ -0,0 +1,343 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRRIS2_H
+#define DRTRRIS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferenceImageNumber (300a,00c8)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferenceImageNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferenceImageNumber (300a,00c8)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferenceImageNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferenceImageNumber (300a,00c8)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferenceImageNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferenceImageNumber (300a,00c8) vr=IS, vm=1, type=1
+        DcmIntegerString ReferenceImageNumber;
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedReferenceImageSequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedReferenceImageSequenceInRTIonBeamsModule &operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris3.h
new file mode 100644 (file)
index 0000000..6e0815f
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRRIS3_H
+#define DRTRRIS3_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTBrachyApplicationSetupsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
deleted file mode 100644 (file)
index 8454435..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRRIS6_H
-#define DRTRRIS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get ReferenceImageNumber (300a,00c8)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferenceImageNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferenceImageNumber (300a,00c8)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferenceImageNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedSOPClassUID (0008,1150)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set ReferenceImageNumber (300a,00c8)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferenceImageNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPClassUID (0008,1150)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// ReferenceImageNumber (300a,00c8) vr=IS, vm=1, type=1
-        DcmIntegerString ReferenceImageNumber;
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedReferenceImageSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedReferenceImageSequenceInRTIonBeamsModule &operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
deleted file mode 100644 (file)
index 66ff13a..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRRIS9_H
-#define DRTRRIS9_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedReferenceImageSequence (300c,0042) in RTBrachyApplicationSetupsModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get ReferencedSOPClassUID (0008,1150)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set ReferencedSOPClassUID (0008,1150)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index 94bb30380fbf9855a2e7ba53cbf44acfda95d1ab..77738368c9de2abc84dc38e13450cc26f0ec59a1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeModulatorSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 1a2ae22a4f3cded53f3be3754129e672057e3d2f..55c583035874397e02db21c22d78676be5ff33a6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtars.h"    // for AnatomicRegionSequence
+#include "dcmtk/dcmrt/seq/drtpass.h"   // for PrimaryAnatomicStructureSequence
 #include "dcmtk/dcmrt/seq/drtrpps.h"   // for ROIPhysicalPropertiesSequence
 #include "dcmtk/dcmrt/seq/drtrics.h"   // for RTROIIdentificationCodeSequence
 #include "dcmtk/dcmrt/seq/drtrrs.h"    // for RTRelatedROISequence
 #include "dcmtk/dcmrt/seq/drtrrros.h"  // for RelatedRTROIObservationsSequence
 #include "dcmtk/dcmrt/seq/drtspccs.h"  // for SegmentedPropertyCategoryCodeSequence
+#include "dcmtk/dcmrt/seq/drttrccs.h"  // for TherapeuticRoleCategoryCodeSequence
+#include "dcmtk/dcmrt/seq/drttrtcs.h"  // for TherapeuticRoleTypeCodeSequence
 
 
 /** Interface class for RTROIObservationsSequence (3006,0080)
@@ -124,20 +128,6 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
          */
         OFCondition getROIInterpreter(OFString &value, const signed long pos = 0) const;
 
-        /** get ROIObservationDescription (3006,0088)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getROIObservationDescription(OFString &value, const signed long pos = 0) const;
-
-        /** get ROIObservationLabel (3006,0085)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getROIObservationLabel(OFString &value, const signed long pos = 0) const;
-
         /** get RTROIInterpretedType (3006,00a4)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -161,6 +151,30 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
 
       // --- get DICOM sequence attributes ---
 
+        /** get AnatomicRegionSequence (0008,2218)
+         *  @return reference to sequence element
+         */
+        DRTAnatomicRegionSequence &getAnatomicRegionSequence()
+            { return AnatomicRegionSequence; }
+
+        /** get AnatomicRegionSequence (0008,2218)
+         *  @return const reference to sequence element
+         */
+        const DRTAnatomicRegionSequence &getAnatomicRegionSequence() const
+            { return AnatomicRegionSequence; }
+
+        /** get PrimaryAnatomicStructureSequence (0008,2228)
+         *  @return reference to sequence element
+         */
+        DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence()
+            { return PrimaryAnatomicStructureSequence; }
+
+        /** get PrimaryAnatomicStructureSequence (0008,2228)
+         *  @return const reference to sequence element
+         */
+        const DRTPrimaryAnatomicStructureSequence &getPrimaryAnatomicStructureSequence() const
+            { return PrimaryAnatomicStructureSequence; }
+
         /** get ROIPhysicalPropertiesSequence (3006,00b0)
          *  @return reference to sequence element
          */
@@ -221,6 +235,30 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
         const DRTSegmentedPropertyCategoryCodeSequence &getSegmentedPropertyCategoryCodeSequence() const
             { return SegmentedPropertyCategoryCodeSequence; }
 
+        /** get TherapeuticRoleCategoryCodeSequence (3010,0064)
+         *  @return reference to sequence element
+         */
+        DRTTherapeuticRoleCategoryCodeSequence &getTherapeuticRoleCategoryCodeSequence()
+            { return TherapeuticRoleCategoryCodeSequence; }
+
+        /** get TherapeuticRoleCategoryCodeSequence (3010,0064)
+         *  @return const reference to sequence element
+         */
+        const DRTTherapeuticRoleCategoryCodeSequence &getTherapeuticRoleCategoryCodeSequence() const
+            { return TherapeuticRoleCategoryCodeSequence; }
+
+        /** get TherapeuticRoleTypeCodeSequence (3010,0065)
+         *  @return reference to sequence element
+         */
+        DRTTherapeuticRoleTypeCodeSequence &getTherapeuticRoleTypeCodeSequence()
+            { return TherapeuticRoleTypeCodeSequence; }
+
+        /** get TherapeuticRoleTypeCodeSequence (3010,0065)
+         *  @return const reference to sequence element
+         */
+        const DRTTherapeuticRoleTypeCodeSequence &getTherapeuticRoleTypeCodeSequence() const
+            { return TherapeuticRoleTypeCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set MaterialID (300a,00e1)
@@ -244,20 +282,6 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
          */
         OFCondition setROIInterpreter(const OFString &value, const OFBool check = OFTrue);
 
-        /** set ROIObservationDescription (3006,0088)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setROIObservationDescription(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ROIObservationLabel (3006,0085)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setROIObservationLabel(const OFString &value, const OFBool check = OFTrue);
-
         /** set RTROIInterpretedType (3006,00a4)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -277,16 +301,16 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// AnatomicRegionSequence (0008,2218) vr=SQ, vm=1, type=3
+        DRTAnatomicRegionSequence AnatomicRegionSequence;
         /// MaterialID (300a,00e1) vr=SH, vm=1, type=3
         DcmShortString MaterialID;
         /// ObservationNumber (3006,0082) vr=IS, vm=1, type=1
         DcmIntegerString ObservationNumber;
+        /// PrimaryAnatomicStructureSequence (0008,2228) vr=SQ, vm=1, type=3
+        DRTPrimaryAnatomicStructureSequence PrimaryAnatomicStructureSequence;
         /// ROIInterpreter (3006,00a6) vr=PN, vm=1, type=2
         DcmPersonName ROIInterpreter;
-        /// ROIObservationDescription (3006,0088) vr=ST, vm=1, type=3
-        DcmShortText ROIObservationDescription;
-        /// ROIObservationLabel (3006,0085) vr=SH, vm=1, type=3
-        DcmShortString ROIObservationLabel;
         /// ROIPhysicalPropertiesSequence (3006,00b0) vr=SQ, vm=1, type=3
         DRTROIPhysicalPropertiesSequence ROIPhysicalPropertiesSequence;
         /// RTROIIdentificationCodeSequence (3006,0086) vr=SQ, vm=1, type=3
@@ -301,6 +325,10 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
         DRTRelatedRTROIObservationsSequence RelatedRTROIObservationsSequence;
         /// SegmentedPropertyCategoryCodeSequence (0062,0003) vr=SQ, vm=1, type=3
         DRTSegmentedPropertyCategoryCodeSequence SegmentedPropertyCategoryCodeSequence;
+        /// TherapeuticRoleCategoryCodeSequence (3010,0064) vr=SQ, vm=1, type=3
+        DRTTherapeuticRoleCategoryCodeSequence TherapeuticRoleCategoryCodeSequence;
+        /// TherapeuticRoleTypeCodeSequence (3010,0065) vr=SQ, vm=1, type=3
+        DRTTherapeuticRoleTypeCodeSequence TherapeuticRoleTypeCodeSequence;
 
     };
 
@@ -410,13 +438,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIObservationsSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index abd4130540704ff4ef3ef0c20803d89dc069a7d3..76f775f1fbeb52b28ccb4c20c84605f0e35225a9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 842abbe44a626d2f54522a88e138fc21a71e12b8..da876b2ffb10947a77896abba7437d0202bf301e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -230,13 +230,13 @@ class DCMTK_DCMRT_EXPORT DRTRelatedRTROIObservationsSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index ced48755d8605d7f4f3b3e767152bf623a6b0bdd..d804f5d1e4e4a3f3c5a07d551da36ae4d5adafe5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTRTRelatedROISequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a6805248e2d3563a14f62622f91233e815bc1d2f..ce4f5c0943ea027c01a5c243b918502aaac623ce 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -262,13 +262,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedRangeShifterSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
deleted file mode 100644 (file)
index 0b9ec68..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedRTPlanSequence
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRRTPS_H
-#define DRTRRTPS_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtrfgs.h"   // for ReferencedFractionGroupSequence
-
-
-/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTDoseModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get ReferencedSOPClassUID (0008,1150)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- get DICOM sequence attributes ---
-
-        /** get ReferencedFractionGroupSequence (300c,0020)
-         *  @return reference to sequence element
-         */
-        DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence()
-            { return ReferencedFractionGroupSequence; }
-
-        /** get ReferencedFractionGroupSequence (300c,0020)
-         *  @return const reference to sequence element
-         */
-        const DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence() const
-            { return ReferencedFractionGroupSequence; }
-
-      // --- set DICOM attribute values ---
-
-        /** set ReferencedSOPClassUID (0008,1150)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// ReferencedFractionGroupSequence (300c,0020) vr=SQ, vm=1, type=1C
-        DRTReferencedFractionGroupSequence ReferencedFractionGroupSequence;
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedRTPlanSequence();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedRTPlanSequence &operator=(const DRTReferencedRTPlanSequence &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
deleted file mode 100644 (file)
index e31a70b..0000000
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRRTPS3_H
-#define DRTRRTPS3_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralPlanModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get RTPlanRelationship (300a,0055)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRTPlanRelationship(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPClassUID (0008,1150)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set RTPlanRelationship (300a,0055)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRTPlanRelationship(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPClassUID (0008,1150)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// RTPlanRelationship (300a,0055) vr=CS, vm=1, type=1
-        DcmCodeString RTPlanRelationship;
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedRTPlanSequenceInRTGeneralPlanModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedRTPlanSequenceInRTGeneralPlanModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
deleted file mode 100644 (file)
index 2284ee5..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRRTPS4_H
-#define DRTRRTPS4_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralTreatmentRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get ReferencedSOPClassUID (0008,1150)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set ReferencedSOPClassUID (0008,1150)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
deleted file mode 100644 (file)
index 5f253ff..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedRTPlanSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRRTPS5_H
-#define DRTRRTPS5_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTImageModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get ReferencedSOPClassUID (0008,1150)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set ReferencedSOPClassUID (0008,1150)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedRTPlanSequenceInRTImageModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedRTPlanSequenceInRTImageModule &operator=(const DRTReferencedRTPlanSequenceInRTImageModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index be11f1275416d267c96be8a946df7ba1f3a4f8c7..bc247a1e3bd47b516944efbc58756356bdfcdab8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 04d6c60d960f6ca30fe0ea066f15db3d61c43af2..796fa11643c5eacb175ff8d4115cb5b3f26987cd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSeriesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 2e425f20ca08b9b11e2d9731b94a44d92a195713..0dfc409f2d9680f5c6e59945c420d408c128c4ae 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedSeriesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 512af790a41d1c7c4037a13d2830517e5041834d..60c2da0115206600d4dfcf6ce6c9109b81cba3e9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs1.h
new file mode 100644 (file)
index 0000000..0aa4d1e
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRSHS1_H
+#define DRTRSHS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get IsocenterToRangeShifterDistance (300a,0364)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get RangeShifterSetting (300a,0362)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const;
+
+        /** get RangeShifterWaterEquivalentThickness (300a,0366)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedRangeShifterNumber (300c,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedRangeShifterNumber (300c,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set IsocenterToRangeShifterDistance (300a,0364)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos = 0);
+
+        /** set RangeShifterSetting (300a,0362)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue);
+
+        /** set RangeShifterWaterEquivalentThickness (300a,0366)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
+
+        /** set ReferencedRangeShifterNumber (300c,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// IsocenterToRangeShifterDistance (300a,0364) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle IsocenterToRangeShifterDistance;
+        /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1
+        DcmLongString RangeShifterSetting;
+        /// RangeShifterWaterEquivalentThickness (300a,0366) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle RangeShifterWaterEquivalentThickness;
+        /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedRangeShifterNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRangeShifterSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs2.h
new file mode 100644 (file)
index 0000000..bc1f859
--- /dev/null
@@ -0,0 +1,327 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRSHS2_H
+#define DRTRSHS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsSessionRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get RangeShifterSetting (300a,0362)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedRangeShifterNumber (300c,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedRangeShifterNumber (300c,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set RangeShifterSetting (300a,0362)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedRangeShifterNumber (300c,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1
+        DcmLongString RangeShifterSetting;
+        /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1
+        DcmIntegerString ReferencedRangeShifterNumber;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
deleted file mode 100644 (file)
index d0753c2..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRSHS6_H
-#define DRTRSHS6_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsModule
- */
-class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get IsocenterToRangeShifterDistance (300a,0364)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get RangeShifterSetting (300a,0362)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const;
-
-        /** get RangeShifterWaterEquivalentThickness (300a,0366)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos = 0) const;
-
-        /** get ReferencedRangeShifterNumber (300c,0100)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedRangeShifterNumber (300c,0100)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set IsocenterToRangeShifterDistance (300a,0364)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos = 0);
-
-        /** set RangeShifterSetting (300a,0362)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue);
-
-        /** set RangeShifterWaterEquivalentThickness (300a,0366)
-         *  @param  value  value to be set (should be valid for this VR)
-         *  @param  pos    index of the value to be set (0..vm-1), vm=1
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
-
-        /** set ReferencedRangeShifterNumber (300c,0100)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// IsocenterToRangeShifterDistance (300a,0364) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle IsocenterToRangeShifterDistance;
-        /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1
-        DcmLongString RangeShifterSetting;
-        /// RangeShifterWaterEquivalentThickness (300a,0366) vr=FL, vm=1, type=3
-        DcmFloatingPointSingle RangeShifterWaterEquivalentThickness;
-        /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedRangeShifterNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
deleted file mode 100644 (file)
index a071bc0..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRSHS7_H
-#define DRTRSHS7_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsSessionRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get RangeShifterSetting (300a,0362)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedRangeShifterNumber (300c,0100)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedRangeShifterNumber (300c,0100)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1)
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set RangeShifterSetting (300a,0362)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedRangeShifterNumber (300c,0100)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// RangeShifterSetting (300a,0362) vr=LO, vm=1, type=1
-        DcmLongString RangeShifterSetting;
-        /// ReferencedRangeShifterNumber (300c,0100) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedRangeShifterNumber;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
index 6e63702fcfbea5f8a2543e6db00a4353f4bed27a..e96e097a7f0e0273447efcfc196ad7a37d172a04 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSetupImageSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index a41c92e6d0458786e87e8c10d87c48e3b90a0a91..f0716c51711e77c7c50bded4fa1fe8c278afd1b1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedSnoutSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index b13fe82638485b3c608325883df4e77183f7570f..6ca670062cba799b3833464dd052350c6ddc9e7b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -294,13 +294,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSOPSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 61a36d8ccd10d6f785381b3e9889cb21f4a0a02a..350491b3efa23888db6eb3beaa8d90e84ceb92a3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedSpatialRegistrationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 14c483ef0a0bd2679617462009d7f54c2e71fff9..651443fab261d05df5c0b56812657b86e281c44e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStudySequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index b0c1cd08e296a3fd0ce21a4072417ae2e26119f4..0cd4214fa05fa433fb0c706afb07779ee4d65e8b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedStructureSetSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 1ddce4518e48411aa624974faf4e590d11ed3863..22bcc58dbb956f50bc0a8cdd60e4b7e609995c78 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTRTReferencedStudySequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps1.h
new file mode 100644 (file)
index 0000000..e7be9c9
--- /dev/null
@@ -0,0 +1,353 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedRTPlanSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRTPS1_H
+#define DRTRTPS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtrfgs.h"   // for ReferencedFractionGroupSequence
+
+
+/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTDoseModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedPlanOverviewIndex (300c,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedPlanOverviewIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ReferencedFractionGroupSequence (300c,0020)
+         *  @return reference to sequence element
+         */
+        DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence()
+            { return ReferencedFractionGroupSequence; }
+
+        /** get ReferencedFractionGroupSequence (300c,0020)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedFractionGroupSequence &getReferencedFractionGroupSequence() const
+            { return ReferencedFractionGroupSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedPlanOverviewIndex (300c,0118)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedPlanOverviewIndex(const Uint16 value, const unsigned long pos = 0);
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedFractionGroupSequence (300c,0020) vr=SQ, vm=1, type=1C
+        DRTReferencedFractionGroupSequence ReferencedFractionGroupSequence;
+        /// ReferencedPlanOverviewIndex (300c,0118) vr=US, vm=1, type=1C
+        DcmUnsignedShort ReferencedPlanOverviewIndex;
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedRTPlanSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedRTPlanSequence &operator=(const DRTReferencedRTPlanSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps2.h
new file mode 100644 (file)
index 0000000..4b01a82
--- /dev/null
@@ -0,0 +1,336 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRTPS2_H
+#define DRTRTPS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralPlanModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralPlanModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get RTPlanRelationship (300a,0055)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRTPlanRelationship(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set RTPlanRelationship (300a,0055)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRTPlanRelationship(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// RTPlanRelationship (300a,0055) vr=CS, vm=1, type=1
+        DcmCodeString RTPlanRelationship;
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedRTPlanSequenceInRTGeneralPlanModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedRTPlanSequenceInRTGeneralPlanModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps3.h
new file mode 100644 (file)
index 0000000..b4d9da2
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRTPS3_H
+#define DRTRTPS3_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTGeneralTreatmentRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtps4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtps4.h
new file mode 100644 (file)
index 0000000..2bef9f6
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedRTPlanSequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRTPS4_H
+#define DRTRTPS4_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for ReferencedRTPlanSequence (300c,0002) in RTImageModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedRTPlanSequenceInRTImageModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedRTPlanSequenceInRTImageModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedRTPlanSequenceInRTImageModule &operator=(const DRTReferencedRTPlanSequenceInRTImageModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs1.h
new file mode 100644 (file)
index 0000000..04a49b5
--- /dev/null
@@ -0,0 +1,337 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRTRS1_H
+#define DRTRTRS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtrbs1.h"   // for ReferencedBeamSequence
+
+
+/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTDoseModule
+ */
+class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ReferencedSOPClassUID (0008,1150)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ReferencedBeamSequence (300c,0004)
+         *  @return reference to sequence element
+         */
+        DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence()
+            { return ReferencedBeamSequence; }
+
+        /** get ReferencedBeamSequence (300c,0004)
+         *  @return const reference to sequence element
+         */
+        const DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence() const
+            { return ReferencedBeamSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ReferencedSOPClassUID (0008,1150)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ReferencedSOPInstanceUID (0008,1155)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ReferencedBeamSequence (300c,0004) vr=SQ, vm=1, type=1C
+        DRTReferencedBeamSequenceInRTDoseModule ReferencedBeamSequence;
+        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPClassUID;
+        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier ReferencedSOPInstanceUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReferencedTreatmentRecordSequenceInRTDoseModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReferencedTreatmentRecordSequenceInRTDoseModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 3dfb338667a3bf0779b61723b8f5f40cf0d6424c..0837fa9e806bf4b9aacc8e3512110310b42540a4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
+ *  Header file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtrbs2.h"   // for ReferencedBeamSequence
 
 
-/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTDoseModule
+/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTGeneralTreatmentRecordModule
  */
-class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
+class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
   : protected DRTTypes
 {
 
@@ -106,20 +105,6 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
          */
         OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
 
-      // --- get DICOM sequence attributes ---
-
-        /** get ReferencedBeamSequence (300c,0004)
-         *  @return reference to sequence element
-         */
-        DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence()
-            { return ReferencedBeamSequence; }
-
-        /** get ReferencedBeamSequence (300c,0004)
-         *  @return const reference to sequence element
-         */
-        const DRTReferencedBeamSequenceInRTDoseModule &getReferencedBeamSequence() const
-            { return ReferencedBeamSequence; }
-
       // --- set DICOM attribute values ---
 
         /** set ReferencedSOPClassUID (0008,1150)
@@ -141,8 +126,6 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// ReferencedBeamSequence (300c,0004) vr=SQ, vm=1, type=1C
-        DRTReferencedBeamSequenceInRTDoseModule ReferencedBeamSequence;
         /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
         DcmUniqueIdentifier ReferencedSOPClassUID;
         /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
@@ -155,22 +138,22 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence = OFFalse);
+    DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy);
+    DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy);
 
     /** destructor
      */
-    virtual ~DRTReferencedTreatmentRecordSequenceInRTDoseModule();
+    virtual ~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule();
 
     /** assignment operator
      *  @param copy sequence object to be copied
      *  @return reference to this object
      */
-    DRTReferencedTreatmentRecordSequenceInRTDoseModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy);
+    DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy);
 
   // --- general methods ---
 
@@ -256,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTDoseModule
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
deleted file mode 100644 (file)
index 7b18408..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTRTRS4_H
-#define DRTRTRS4_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for ReferencedTreatmentRecordSequence (3008,0030) in RTGeneralTreatmentRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get ReferencedSOPClassUID (0008,1150)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPClassUID(OFString &value, const signed long pos = 0) const;
-
-        /** get ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getReferencedSOPInstanceUID(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set ReferencedSOPClassUID (0008,1150)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPClassUID(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ReferencedSOPInstanceUID (0008,1155)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setReferencedSOPInstanceUID(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// ReferencedSOPClassUID (0008,1150) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPClassUID;
-        /// ReferencedSOPInstanceUID (0008,1155) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier ReferencedSOPInstanceUID;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrvcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrvcs.h
new file mode 100644 (file)
index 0000000..42bd6f4
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTReasonForVisitCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTRVCS_H
+#define DRTRVCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for ReasonForVisitCodeSequence (0032,1067)
+ */
+class DCMTK_DCMRT_EXPORT DRTReasonForVisitCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTReasonForVisitCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTReasonForVisitCodeSequence(const DRTReasonForVisitCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTReasonForVisitCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTReasonForVisitCodeSequence &operator=(const DRTReasonForVisitCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index f3b4325ef76048e835c478e4e707741fb096b0dc..18789d4f7968bd847a92a693dba2b2488d776d33 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTReferencedVerificationImageSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 9e0190dd13cb990133dd024fb580a7dbc50652a6..4668f9e79222a4934d25b45b37c71600f51af78d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -324,13 +324,13 @@ class DCMTK_DCMRT_EXPORT DRTRecordedWedgeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 66b87555b6db71d0ed28d8ac4210a240c5bf948e..f59645565fc42c88f5895269f7d027643e70ec62 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -383,13 +383,13 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 62aca333e91700711e4d76cab29b7daee037b8ae..375c19256de1be45ebb32e5982a73eea2ff0003f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -240,13 +240,13 @@ class DCMTK_DCMRT_EXPORT DRTStudiesContainingOtherReferencedInstancesSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index d9b230eb48d2307a2dea550689ebb47dac055772..ad89b93088ad46c7669022673f3ff79e5440679f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStrainCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTStrainCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtscvs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtscvs.h
new file mode 100644 (file)
index 0000000..20baf1e
--- /dev/null
@@ -0,0 +1,337 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTSourceConceptualVolumeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTSCVS_H
+#define DRTSCVS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtcvcss.h"  // for ConceptualVolumeConstituentSegmentationReferenceSequence
+
+
+/** Interface class for SourceConceptualVolumeSequence (3010,0018)
+ */
+class DCMTK_DCMRT_EXPORT DRTSourceConceptualVolumeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get ConceptualVolumeConstituentIndex (3010,000d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getConceptualVolumeConstituentIndex(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get SourceConceptualVolumeUID (3010,0015)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSourceConceptualVolumeUID(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012)
+         *  @return reference to sequence element
+         */
+        DRTConceptualVolumeConstituentSegmentationReferenceSequence &getConceptualVolumeConstituentSegmentationReferenceSequence()
+            { return ConceptualVolumeConstituentSegmentationReferenceSequence; }
+
+        /** get ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012)
+         *  @return const reference to sequence element
+         */
+        const DRTConceptualVolumeConstituentSegmentationReferenceSequence &getConceptualVolumeConstituentSegmentationReferenceSequence() const
+            { return ConceptualVolumeConstituentSegmentationReferenceSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set ConceptualVolumeConstituentIndex (3010,000d)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setConceptualVolumeConstituentIndex(const Uint16 value, const unsigned long pos = 0);
+
+        /** set SourceConceptualVolumeUID (3010,0015)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSourceConceptualVolumeUID(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// ConceptualVolumeConstituentIndex (3010,000d) vr=US, vm=1, type=1
+        DcmUnsignedShort ConceptualVolumeConstituentIndex;
+        /// ConceptualVolumeConstituentSegmentationReferenceSequence (3010,0012) vr=SQ, vm=1, type=2
+        DRTConceptualVolumeConstituentSegmentationReferenceSequence ConceptualVolumeConstituentSegmentationReferenceSequence;
+        /// SourceConceptualVolumeUID (3010,0015) vr=UI, vm=1, type=1
+        DcmUniqueIdentifier SourceConceptualVolumeUID;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTSourceConceptualVolumeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTSourceConceptualVolumeSequence(const DRTSourceConceptualVolumeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTSourceConceptualVolumeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTSourceConceptualVolumeSequence &operator=(const DRTSourceConceptualVolumeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 6e8c82f727e4e374a42d34c238384c8c7e11ba97..82a57a9a502957120cae8da2f783eb9776204704 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5e4fa5b437c46eed300fd4492e23d9a3f37bb100..dae7c7edaecef98f406c2e3a522bbb6268d88b1b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -310,13 +310,13 @@ class DCMTK_DCMRT_EXPORT DRTSetupDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3c6c54123639d0810e4e0bb44700893705962a8d..432d34e40ffed661cc5e55cf407c551bc0275a7a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -287,13 +287,13 @@ class DCMTK_DCMRT_EXPORT DRTShieldingDeviceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 49c43ff69430df5b6544f82fbd571e6bc18f9edd..2652482d2911b37f19ca47b798cdaa607c60d507 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceInstanceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 9265d285a897c7101c4f06d8a5c107f434665297..fe94c737336da7b4ade1e05961a4b6493acb0128 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -327,13 +327,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceImageSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index ae8fc8278d4989116b5b8908a6a4ec8e1657b424..f304a24d046738ce2f026bd5b8547c73df97c7fd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTSnoutSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index f7ac4138307ccf4b3f1a4501f4d821089272ee00..70395dd77fc32f2cc810825402125423750a0fe0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 501c84be978049b0f9375e227146f5b05e034c28..94d7075aa5f1da5566a39c41c434256c1786e062 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -479,13 +479,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 163bda91bff61d21fce4f254758439ec334543a7..9e2a0d720d9164af366a15c921b33e6f7fd98981 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourcePatientGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTSourcePatientGroupIdentificationSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsppcs.h
new file mode 100644 (file)
index 0000000..ae572d1
--- /dev/null
@@ -0,0 +1,453 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTSourcePixelPlanesCharacteristicsSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTSPPCS_H
+#define DRTSPPCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+
+
+/** Interface class for SourcePixelPlanesCharacteristicsSequence (3006,004a)
+ */
+class DCMTK_DCMRT_EXPORT DRTSourcePixelPlanesCharacteristicsSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get Columns (0028,0011)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getColumns(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get ImageOrientationPatient (0020,0037)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getImageOrientationPatient(OFString &value, const signed long pos = 0) const;
+
+        /** get ImageOrientationPatient (0020,0037)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getImageOrientationPatient(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ImageOrientationPatient (0020,0037)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getImageOrientationPatient(OFVector<Float64> &value) const;
+
+        /** get ImagePositionPatient (0020,0032)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getImagePositionPatient(OFString &value, const signed long pos = 0) const;
+
+        /** get ImagePositionPatient (0020,0032)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getImagePositionPatient(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get ImagePositionPatient (0020,0032)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getImagePositionPatient(OFVector<Float64> &value) const;
+
+        /** get NumberOfFrames (0028,0008)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfFrames(OFString &value, const signed long pos = 0) const;
+
+        /** get NumberOfFrames (0028,0008)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getNumberOfFrames(Sint32 &value, const unsigned long pos = 0) const;
+
+        /** get PixelSpacing (0028,0030)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPixelSpacing(OFString &value, const signed long pos = 0) const;
+
+        /** get PixelSpacing (0028,0030)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPixelSpacing(Float64 &value, const unsigned long pos = 0) const;
+
+        /** get PixelSpacing (0028,0030)
+         *  @param  value  reference to variable in which the value(s) should be stored
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getPixelSpacing(OFVector<Float64> &value) const;
+
+        /** get Rows (0028,0010)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getRows(Uint16 &value, const unsigned long pos = 0) const;
+
+        /** get SpacingBetweenSlices (0018,0088)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSpacingBetweenSlices(OFString &value, const signed long pos = 0) const;
+
+        /** get SpacingBetweenSlices (0018,0088)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1)
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getSpacingBetweenSlices(Float64 &value, const unsigned long pos = 0) const;
+
+      // --- set DICOM attribute values ---
+
+        /** set Columns (0028,0011)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setColumns(const Uint16 value, const unsigned long pos = 0);
+
+        /** set ImageOrientationPatient (0020,0037)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (6) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setImageOrientationPatient(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ImagePositionPatient (0020,0032)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (3) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setImagePositionPatient(const OFString &value, const OFBool check = OFTrue);
+
+        /** set NumberOfFrames (0028,0008)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (IS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setNumberOfFrames(const OFString &value, const OFBool check = OFTrue);
+
+        /** set PixelSpacing (0028,0030)
+         *  @param  value  value to be set (possibly multi-valued) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (2) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPixelSpacing(const OFString &value, const OFBool check = OFTrue);
+
+        /** set Rows (0028,0010)
+         *  @param  value  value to be set (should be valid for this VR)
+         *  @param  pos    index of the value to be set (0..vm-1), vm=1
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setRows(const Uint16 value, const unsigned long pos = 0);
+
+        /** set SpacingBetweenSlices (0018,0088)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setSpacingBetweenSlices(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// Columns (0028,0011) vr=US, vm=1, type=1
+        DcmUnsignedShort Columns;
+        /// ImageOrientationPatient (0020,0037) vr=DS, vm=6, type=1
+        DcmDecimalString ImageOrientationPatient;
+        /// ImagePositionPatient (0020,0032) vr=DS, vm=3, type=1
+        DcmDecimalString ImagePositionPatient;
+        /// NumberOfFrames (0028,0008) vr=IS, vm=1, type=1
+        DcmIntegerString NumberOfFrames;
+        /// PixelSpacing (0028,0030) vr=DS, vm=2, type=1
+        DcmDecimalString PixelSpacing;
+        /// Rows (0028,0010) vr=US, vm=1, type=1
+        DcmUnsignedShort Rows;
+        /// SpacingBetweenSlices (0018,0088) vr=DS, vm=1, type=1
+        DcmDecimalString SpacingBetweenSlices;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTSourcePixelPlanesCharacteristicsSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTSourcePixelPlanesCharacteristicsSequence(const DRTSourcePixelPlanesCharacteristicsSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTSourcePixelPlanesCharacteristicsSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTSourcePixelPlanesCharacteristicsSequence &operator=(const DRTSourcePixelPlanesCharacteristicsSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 25e382e17e79bb082a0174a774d1eb1068c3b9f0..8e6049c9b6d4f8ea1854c12047d93de8ef2074c4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSegmentedPropertyTypeModifierCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyTypeModifierCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3a04e0740331f96792073a700d83128b6f4426af..0258cb579437ac07b6895d22218a9b1c9495642e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -551,13 +551,13 @@ class DCMTK_DCMRT_EXPORT DRTSourceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 153f6d969c1702d7c5c837d3552366adbf285072..a74d96fadc8d36e4ebe0d050f26177487b188085 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStrainSourceRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -464,13 +464,13 @@ class DCMTK_DCMRT_EXPORT DRTStrainSourceRegistryCodeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 7f6c423c37a7a0b74ccb7af75236b0587ce6d095..00c922def4d35efc115526baff1a1af279daf48a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtcvis.h"   // for ConceptualVolumeIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtdfss.h"   // for DefinitionSourceSequence
 #include "dcmtk/dcmrt/seq/drtdcs.h"    // for DerivationCodeSequence
+#include "dcmtk/dcmrt/seq/drtrdais.h"  // for ROIDerivationAlgorithmIdentificationSequence
 
 
 /** Interface class for StructureSetROISequence (3006,0020)
@@ -157,6 +160,30 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
 
       // --- get DICOM sequence attributes ---
 
+        /** get ConceptualVolumeIdentificationSequence (3010,00a0)
+         *  @return reference to sequence element
+         */
+        DRTConceptualVolumeIdentificationSequence &getConceptualVolumeIdentificationSequence()
+            { return ConceptualVolumeIdentificationSequence; }
+
+        /** get ConceptualVolumeIdentificationSequence (3010,00a0)
+         *  @return const reference to sequence element
+         */
+        const DRTConceptualVolumeIdentificationSequence &getConceptualVolumeIdentificationSequence() const
+            { return ConceptualVolumeIdentificationSequence; }
+
+        /** get DefinitionSourceSequence (0008,1156)
+         *  @return reference to sequence element
+         */
+        DRTDefinitionSourceSequence &getDefinitionSourceSequence()
+            { return DefinitionSourceSequence; }
+
+        /** get DefinitionSourceSequence (0008,1156)
+         *  @return const reference to sequence element
+         */
+        const DRTDefinitionSourceSequence &getDefinitionSourceSequence() const
+            { return DefinitionSourceSequence; }
+
         /** get DerivationCodeSequence (0008,9215)
          *  @return reference to sequence element
          */
@@ -169,6 +196,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
         const DRTDerivationCodeSequence &getDerivationCodeSequence() const
             { return DerivationCodeSequence; }
 
+        /** get ROIDerivationAlgorithmIdentificationSequence (3006,0037)
+         *  @return reference to sequence element
+         */
+        DRTROIDerivationAlgorithmIdentificationSequence &getROIDerivationAlgorithmIdentificationSequence()
+            { return ROIDerivationAlgorithmIdentificationSequence; }
+
+        /** get ROIDerivationAlgorithmIdentificationSequence (3006,0037)
+         *  @return const reference to sequence element
+         */
+        const DRTROIDerivationAlgorithmIdentificationSequence &getROIDerivationAlgorithmIdentificationSequence() const
+            { return ROIDerivationAlgorithmIdentificationSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set ROIDescription (3006,0028)
@@ -225,8 +264,14 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
+        /// ConceptualVolumeIdentificationSequence (3010,00a0) vr=SQ, vm=1, type=3
+        DRTConceptualVolumeIdentificationSequence ConceptualVolumeIdentificationSequence;
+        /// DefinitionSourceSequence (0008,1156) vr=SQ, vm=1, type=3
+        DRTDefinitionSourceSequence DefinitionSourceSequence;
         /// DerivationCodeSequence (0008,9215) vr=SQ, vm=1, type=3
         DRTDerivationCodeSequence DerivationCodeSequence;
+        /// ROIDerivationAlgorithmIdentificationSequence (3006,0037) vr=SQ, vm=1, type=3
+        DRTROIDerivationAlgorithmIdentificationSequence ROIDerivationAlgorithmIdentificationSequence;
         /// ROIDescription (3006,0028) vr=ST, vm=1, type=3
         DcmShortText ROIDescription;
         /// ROIGenerationAlgorithm (3006,0036) vr=CS, vm=1, type=2
@@ -350,13 +395,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetROISequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index c9a9ea130bd94301ea8946905c15263b879d9143..ba3e8ca137fb9befbf0a3dd1e322358b51941e48 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStrainStockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -256,13 +256,13 @@ class DCMTK_DCMRT_EXPORT DRTStrainStockSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
deleted file mode 100644 (file)
index 6c18905..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTTMS0_H
-#define DRTTMS0_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for TreatmentMachineSequence (300a,0206) in RTTreatmentMachineRecordModule
- */
-class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get DeviceSerialNumber (0018,1000)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get InstitutionAddress (0008,0081)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const;
-
-        /** get InstitutionName (0008,0080)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
-
-        /** get InstitutionalDepartmentName (0008,1040)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
-
-        /** get Manufacturer (0008,0070)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
-
-        /** get ManufacturerModelName (0008,1090)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
-
-        /** get TreatmentMachineName (300a,00b2)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set DeviceSerialNumber (0018,1000)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set InstitutionAddress (0008,0081)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue);
-
-        /** set InstitutionName (0008,0080)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
-
-        /** set InstitutionalDepartmentName (0008,1040)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
-
-        /** set Manufacturer (0008,0070)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ManufacturerModelName (0008,1090)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
-
-        /** set TreatmentMachineName (300a,00b2)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=2
-        DcmLongString DeviceSerialNumber;
-        /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
-        DcmShortText InstitutionAddress;
-        /// InstitutionName (0008,0080) vr=LO, vm=1, type=2
-        DcmLongString InstitutionName;
-        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
-        DcmLongString InstitutionalDepartmentName;
-        /// Manufacturer (0008,0070) vr=LO, vm=1, type=2
-        DcmLongString Manufacturer;
-        /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=2
-        DcmLongString ManufacturerModelName;
-        /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2
-        DcmShortString TreatmentMachineName;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms1.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms1.h
new file mode 100644 (file)
index 0000000..76dc7d4
--- /dev/null
@@ -0,0 +1,417 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTTMS1_H
+#define DRTTMS1_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
+
+
+/** Interface class for TreatmentMachineSequence (300a,0206) in RTBrachyApplicationSetupsModule
+ */
+class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get DeviceSerialNumber (0018,1000)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get InstitutionAddress (0008,0081)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const;
+
+        /** get InstitutionName (0008,0080)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
+
+        /** get InstitutionalDepartmentName (0008,1040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
+
+        /** get Manufacturer (0008,0070)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
+
+        /** get ManufacturerModelName (0008,1090)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
+
+        /** get TreatmentMachineName (300a,00b2)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set DeviceSerialNumber (0018,1000)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set InstitutionAddress (0008,0081)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue);
+
+        /** set InstitutionName (0008,0080)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set InstitutionalDepartmentName (0008,1040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set Manufacturer (0008,0070)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ManufacturerModelName (0008,1090)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TreatmentMachineName (300a,00b2)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
+        DcmLongString DeviceSerialNumber;
+        /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
+        DcmShortText InstitutionAddress;
+        /// InstitutionName (0008,0080) vr=LO, vm=1, type=3
+        DcmLongString InstitutionName;
+        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
+        DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
+        /// Manufacturer (0008,0070) vr=LO, vm=1, type=3
+        DcmLongString Manufacturer;
+        /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
+        DcmLongString ManufacturerModelName;
+        /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2
+        DcmShortString TreatmentMachineName;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms2.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms2.h
new file mode 100644 (file)
index 0000000..c13bbd3
--- /dev/null
@@ -0,0 +1,417 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTTMS2_H
+#define DRTTMS2_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtidcs.h"   // for InstitutionalDepartmentTypeCodeSequence
+
+
+/** Interface class for TreatmentMachineSequence (300a,0206) in RTTreatmentMachineRecordModule
+ */
+class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get DeviceSerialNumber (0018,1000)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
+
+        /** get InstitutionAddress (0008,0081)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const;
+
+        /** get InstitutionName (0008,0080)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
+
+        /** get InstitutionalDepartmentName (0008,1040)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
+
+        /** get Manufacturer (0008,0070)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
+
+        /** get ManufacturerModelName (0008,1090)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
+
+        /** get TreatmentMachineName (300a,00b2)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return reference to sequence element
+         */
+        DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence()
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+        /** get InstitutionalDepartmentTypeCodeSequence (0008,1041)
+         *  @return const reference to sequence element
+         */
+        const DRTInstitutionalDepartmentTypeCodeSequence &getInstitutionalDepartmentTypeCodeSequence() const
+            { return InstitutionalDepartmentTypeCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set DeviceSerialNumber (0018,1000)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
+
+        /** set InstitutionAddress (0008,0081)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue);
+
+        /** set InstitutionName (0008,0080)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set InstitutionalDepartmentName (0008,1040)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set Manufacturer (0008,0070)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ManufacturerModelName (0008,1090)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set TreatmentMachineName (300a,00b2)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=2
+        DcmLongString DeviceSerialNumber;
+        /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
+        DcmShortText InstitutionAddress;
+        /// InstitutionName (0008,0080) vr=LO, vm=1, type=2
+        DcmLongString InstitutionName;
+        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
+        DcmLongString InstitutionalDepartmentName;
+        /// InstitutionalDepartmentTypeCodeSequence (0008,1041) vr=SQ, vm=1, type=3
+        DRTInstitutionalDepartmentTypeCodeSequence InstitutionalDepartmentTypeCodeSequence;
+        /// Manufacturer (0008,0070) vr=LO, vm=1, type=2
+        DcmLongString Manufacturer;
+        /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=2
+        DcmLongString ManufacturerModelName;
+        /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2
+        DcmShortString TreatmentMachineName;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy);
+
+    /** destructor
+     */
+    virtual ~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
deleted file mode 100644 (file)
index e0946cc..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Header file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#ifndef DRTTMS9_H
-#define DRTTMS9_H
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/ofstd/oflist.h"        // for standard list class
-#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-
-
-/** Interface class for TreatmentMachineSequence (300a,0206) in RTBrachyApplicationSetupsModule
- */
-class DCMTK_DCMRT_EXPORT DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
-  : protected DRTTypes
-{
-
-  public:
-
-    /** Item class
-     */
-    class DCMTK_DCMRT_EXPORT Item
-      : protected DRTTypes
-    {
-
-      public:
-
-      // --- constructors, destructor and operators ---
-
-        /** (default) constructor
-         *  @param emptyDefaultItem flag used to mark the empty default item
-         */
-        Item(const OFBool emptyDefaultItem = OFFalse);
-
-        /** copy constructor
-         *  @param copy item object to be copied
-         */
-        Item(const Item &copy);
-
-        /** destructor
-         */
-        virtual ~Item();
-
-        /** assignment operator
-         *  @param copy item object to be copied
-         *  @return reference to this object
-         */
-        Item &operator=(const Item &copy);
-
-      // --- general methods ---
-
-        /** clear all internal member variables
-         */
-        void clear();
-
-        /** check if item is empty
-         *  @return OFTrue if item is empty, OFFalse otherwise
-         */
-        OFBool isEmpty();
-
-        /** check if item is valid, i.e.\ not the empty default item
-         *  @return OFTrue if item is valid, OFFalse otherwise
-         */
-        OFBool isValid() const;
-
-      // --- input/output methods ---
-
-        /** read elements from sequence item
-         *  @param  item    reference to DICOM sequence item from which the elements should be read
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition read(DcmItem &item);
-
-        /** write elements to sequence item
-         *  @param  item    reference to DICOM sequence item to which the elements should be written
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition write(DcmItem &item);
-
-      // --- get DICOM attribute values ---
-
-        /** get DeviceSerialNumber (0018,1000)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getDeviceSerialNumber(OFString &value, const signed long pos = 0) const;
-
-        /** get InstitutionAddress (0008,0081)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getInstitutionAddress(OFString &value, const signed long pos = 0) const;
-
-        /** get InstitutionName (0008,0080)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getInstitutionName(OFString &value, const signed long pos = 0) const;
-
-        /** get InstitutionalDepartmentName (0008,1040)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getInstitutionalDepartmentName(OFString &value, const signed long pos = 0) const;
-
-        /** get Manufacturer (0008,0070)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getManufacturer(OFString &value, const signed long pos = 0) const;
-
-        /** get ManufacturerModelName (0008,1090)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getManufacturerModelName(OFString &value, const signed long pos = 0) const;
-
-        /** get TreatmentMachineName (300a,00b2)
-         *  @param  value  reference to variable in which the value should be stored
-         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition getTreatmentMachineName(OFString &value, const signed long pos = 0) const;
-
-      // --- set DICOM attribute values ---
-
-        /** set DeviceSerialNumber (0018,1000)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setDeviceSerialNumber(const OFString &value, const OFBool check = OFTrue);
-
-        /** set InstitutionAddress (0008,0081)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setInstitutionAddress(const OFString &value, const OFBool check = OFTrue);
-
-        /** set InstitutionName (0008,0080)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setInstitutionName(const OFString &value, const OFBool check = OFTrue);
-
-        /** set InstitutionalDepartmentName (0008,1040)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setInstitutionalDepartmentName(const OFString &value, const OFBool check = OFTrue);
-
-        /** set Manufacturer (0008,0070)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setManufacturer(const OFString &value, const OFBool check = OFTrue);
-
-        /** set ManufacturerModelName (0008,1090)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setManufacturerModelName(const OFString &value, const OFBool check = OFTrue);
-
-        /** set TreatmentMachineName (300a,00b2)
-         *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setTreatmentMachineName(const OFString &value, const OFBool check = OFTrue);
-
-      private:
-
-        /// internal flag used to mark the empty default item
-        /*const*/ OFBool EmptyDefaultItem;
-
-        /// DeviceSerialNumber (0018,1000) vr=LO, vm=1, type=3
-        DcmLongString DeviceSerialNumber;
-        /// InstitutionAddress (0008,0081) vr=ST, vm=1, type=3
-        DcmShortText InstitutionAddress;
-        /// InstitutionName (0008,0080) vr=LO, vm=1, type=3
-        DcmLongString InstitutionName;
-        /// InstitutionalDepartmentName (0008,1040) vr=LO, vm=1, type=3
-        DcmLongString InstitutionalDepartmentName;
-        /// Manufacturer (0008,0070) vr=LO, vm=1, type=3
-        DcmLongString Manufacturer;
-        /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
-        DcmLongString ManufacturerModelName;
-        /// TreatmentMachineName (300a,00b2) vr=SH, vm=1, type=2
-        DcmShortString TreatmentMachineName;
-
-    };
-
-  // --- constructors, destructor and operators ---
-
-    /** (default) constructor
-     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
-     */
-    DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence = OFFalse);
-
-    /** copy constructor
-     *  @param copy sequence object to be copied
-     */
-    DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy);
-
-    /** destructor
-     */
-    virtual ~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule();
-
-    /** assignment operator
-     *  @param copy sequence object to be copied
-     *  @return reference to this object
-     */
-    DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy);
-
-  // --- general methods ---
-
-    /** clear all internal member variables
-     */
-    void clear();
-
-    /** check if sequence is empty
-     *  @return OFTrue if sequence is empty, OFFalse otherwise
-     */
-    OFBool isEmpty();
-
-    /** check if sequence is valid, i.e.\ not the empty default sequence
-     *  @return OFTrue if sequence is valid, OFFalse otherwise
-     */
-    OFBool isValid() const;
-
-    /** get number of items in the sequence
-     *  @return number of items
-     */
-    size_t getNumberOfItems() const;
-
-    /** goto first item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoFirstItem();
-
-    /** goto next item in the sequence
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoNextItem();
-
-    /** goto particular item in the sequence
-     *  @param  num  number of the item to be selected (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num);
-
-    /** get current item in the sequence
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getCurrentItem(Item *&item) const;
-
-    /** get current item in the sequence
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getCurrentItem();
-
-    /** get current item in the sequence
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getCurrentItem() const;
-
-    /** get particular item in the sequence
-     *  @param  num   number of the item to be retrieved (0..num-1)
-     *  @param  item  reference to item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition getItem(const size_t num, Item *&item);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &getItem(const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &getItem(const size_t num) const;
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return reference to specified item if successful, empty default item otherwise
-     */
-    Item &operator[](const size_t num);
-
-    /** get particular item in the sequence
-     *  @param  num  number of the item to be retrieved (0..num-1)
-     *  @return const reference to specified item if successful, empty default item otherwise
-     */
-    const Item &operator[](const size_t num) const;
-
-    /** add new item to the end of this sequence
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition addItem(Item *&item);
-
-    /** insert new item into the sequence
-     *  @param  pos   position where the new item is to be inserted (0..num)
-     *  @param  item  reference to new item pointer (result variable)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition insertItem(const size_t pos, Item *&item);
-
-    /** remove particular item from the sequence
-     *  @param  pos  position of the item to be removed (0..num-1)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition removeItem(const size_t pos);
-
-  // --- input/output methods ---
-
-    /** read sequence of items from dataset
-     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition read(DcmItem &dataset,
-                     const OFString &card,
-                     const OFString &type,
-                     const char *moduleName = NULL);
-
-    /** write sequence of items to dataset
-     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
-     *  @param  card        cardinality (valid range for number of items)
-     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
-     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition write(DcmItem &dataset,
-                      const OFString &card,
-                      const OFString &type,
-                      const char *moduleName = NULL);
-
-  protected:
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListIterator(Item *) &iterator);
-
-    /** goto particular item in the sequence
-     *  @param  num       number of the item to be selected (0..num-1)
-     *  @param  iterator  list iterator storing the position of the item
-     *  @return status, EC_Normal if successful, an error code otherwise
-     */
-    OFCondition gotoItem(const size_t num,
-                         OFListConstIterator(Item *) &iterator) const;
-
-  private:
-
-    /// internal flag used to mark the empty default sequence
-    /*const*/ OFBool EmptyDefaultSequence;
-
-    /// list of items in this sequence
-    OFList<Item *>         SequenceOfItems;
-    /// currently selected item
-    OFListIterator(Item *) CurrentItem;
-    /// empty default item
-    Item                   EmptyItem;
-
-};
-
-
-#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttrccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttrccs.h
new file mode 100644 (file)
index 0000000..3f22bd6
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTTherapeuticRoleCategoryCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTTRCCS_H
+#define DRTTRCCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for TherapeuticRoleCategoryCodeSequence (3010,0064)
+ */
+class DCMTK_DCMRT_EXPORT DRTTherapeuticRoleCategoryCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTTherapeuticRoleCategoryCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTTherapeuticRoleCategoryCodeSequence(const DRTTherapeuticRoleCategoryCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTTherapeuticRoleCategoryCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTTherapeuticRoleCategoryCodeSequence &operator=(const DRTTherapeuticRoleCategoryCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttrtcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttrtcs.h
new file mode 100644 (file)
index 0000000..8f2511a
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTTherapeuticRoleTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTTRTCS_H
+#define DRTTRTCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for TherapeuticRoleTypeCodeSequence (3010,0065)
+ */
+class DCMTK_DCMRT_EXPORT DRTTherapeuticRoleTypeCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTTherapeuticRoleTypeCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTTherapeuticRoleTypeCodeSequence(const DRTTherapeuticRoleTypeCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTTherapeuticRoleTypeCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTTherapeuticRoleTypeCodeSequence &operator=(const DRTTherapeuticRoleTypeCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 4c4e306fba61d92b9cfdf9eb58c97880859bdd34..235bd9a919f3a8445f9ee9f4dc8ecc1669d2f393 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -269,13 +269,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryCalculatedDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttscs.h
new file mode 100644 (file)
index 0000000..35b84cd
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTTreatmentSiteCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTTSCS_H
+#define DRTTSCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for TreatmentSiteCodeSequence (3010,0078)
+ */
+class DCMTK_DCMRT_EXPORT DRTTreatmentSiteCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTTreatmentSiteCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTTreatmentSiteCodeSequence(const DRTTreatmentSiteCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTTreatmentSiteCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTTreatmentSiteCodeSequence &operator=(const DRTTreatmentSiteCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 4c554fcf8ff89841f010614deeba84d82e137747..1132c219f5869fafff50ef36013ae1f19aca64c9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 #include "dcmtk/ofstd/oflist.h"        // for standard list class
 #include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
-#include "dcmtk/dcmrt/seq/drtas7.h"    // for ApplicatorSequence
+#include "dcmtk/dcmrt/seq/drtas4.h"    // for ApplicatorSequence
 #include "dcmtk/dcmrt/seq/drtbldls.h"  // for BeamLimitingDeviceLeafPairsSequence
 #include "dcmtk/dcmrt/seq/drtdddps.h"  // for DeliveredDepthDoseParametersSequence
-#include "dcmtk/dcmrt/seq/drtgas.h"    // for GeneralAccessorySequence
+#include "dcmtk/dcmrt/seq/drtgas6.h"   // for GeneralAccessorySequence
 #include "dcmtk/dcmrt/seq/drticpds.h"  // for IonControlPointDeliverySequence
+#include "dcmtk/dcmrt/seq/drtmttcs.h"  // for MachineSpecificTreatmentTerminationCodeSequence
+#include "dcmtk/dcmrt/seq/drtttrcs.h"  // for RTTreatmentTerminationReasonCodeSequence
 #include "dcmtk/dcmrt/seq/drtrbls.h"   // for RecordedBlockSequence
 #include "dcmtk/dcmrt/seq/drtrcos.h"   // for RecordedCompensatorSequence
 #include "dcmtk/dcmrt/seq/drtrlsds.h"  // for RecordedLateralSpreadingDeviceSequence
@@ -31,7 +33,7 @@
 #include "dcmtk/dcmrt/seq/drtrrshs.h"  // for RecordedRangeShifterSequence
 #include "dcmtk/dcmrt/seq/drtrsns.h"   // for RecordedSnoutSequence
 #include "dcmtk/dcmrt/seq/drtrws.h"    // for RecordedWedgeSequence
-#include "dcmtk/dcmrt/seq/drtrbos7.h"  // for ReferencedBolusSequence
+#include "dcmtk/dcmrt/seq/drtrbos3.h"  // for ReferencedBolusSequence
 #include "dcmtk/dcmrt/seq/drtrcdrs.h"  // for ReferencedCalculatedDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drtrmdrs.h"  // for ReferencedMeasuredDoseReferenceSequence
 #include "dcmtk/dcmrt/seq/drtrvis.h"   // for ReferencedVerificationImageSequence
@@ -184,6 +186,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition getDeliveredTreatmentTime(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get EntityLongLabel (3010,0038)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getEntityLongLabel(OFString &value, const signed long pos = 0) const;
+
         /** get FixationEye (300a,0150)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -485,12 +494,12 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition getTreatmentDeliveryType(OFString &value, const signed long pos = 0) const;
 
-        /** get TreatmentTerminationCode (3008,002b)
+        /** get TreatmentTerminationDescription (300a,0730)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getTreatmentTerminationCode(OFString &value, const signed long pos = 0) const;
+        OFCondition getTreatmentTerminationDescription(OFString &value, const signed long pos = 0) const;
 
         /** get TreatmentTerminationStatus (3008,002a)
          *  @param  value  reference to variable in which the value should be stored
@@ -547,13 +556,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         /** get GeneralAccessorySequence (300a,0420)
          *  @return reference to sequence element
          */
-        DRTGeneralAccessorySequence &getGeneralAccessorySequence()
+        DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &getGeneralAccessorySequence()
             { return GeneralAccessorySequence; }
 
         /** get GeneralAccessorySequence (300a,0420)
          *  @return const reference to sequence element
          */
-        const DRTGeneralAccessorySequence &getGeneralAccessorySequence() const
+        const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &getGeneralAccessorySequence() const
             { return GeneralAccessorySequence; }
 
         /** get IonControlPointDeliverySequence (3008,0041)
@@ -568,6 +577,30 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         const DRTIonControlPointDeliverySequence &getIonControlPointDeliverySequence() const
             { return IonControlPointDeliverySequence; }
 
+        /** get MachineSpecificTreatmentTerminationCodeSequence (300a,0716)
+         *  @return reference to sequence element
+         */
+        DRTMachineSpecificTreatmentTerminationCodeSequence &getMachineSpecificTreatmentTerminationCodeSequence()
+            { return MachineSpecificTreatmentTerminationCodeSequence; }
+
+        /** get MachineSpecificTreatmentTerminationCodeSequence (300a,0716)
+         *  @return const reference to sequence element
+         */
+        const DRTMachineSpecificTreatmentTerminationCodeSequence &getMachineSpecificTreatmentTerminationCodeSequence() const
+            { return MachineSpecificTreatmentTerminationCodeSequence; }
+
+        /** get RTTreatmentTerminationReasonCodeSequence (300a,0715)
+         *  @return reference to sequence element
+         */
+        DRTRTTreatmentTerminationReasonCodeSequence &getRTTreatmentTerminationReasonCodeSequence()
+            { return RTTreatmentTerminationReasonCodeSequence; }
+
+        /** get RTTreatmentTerminationReasonCodeSequence (300a,0715)
+         *  @return const reference to sequence element
+         */
+        const DRTRTTreatmentTerminationReasonCodeSequence &getRTTreatmentTerminationReasonCodeSequence() const
+            { return RTTreatmentTerminationReasonCodeSequence; }
+
         /** get RecordedBlockSequence (3008,00d0)
          *  @return reference to sequence element
          */
@@ -751,6 +784,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition setDeliveredTreatmentTime(const OFString &value, const OFBool check = OFTrue);
 
+        /** set EntityLongLabel (3010,0038)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setEntityLongLabel(const OFString &value, const OFBool check = OFTrue);
+
         /** set FixationEye (300a,0150)
          *  @param  value  value to be set (single value only) or "" for no value
          *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
@@ -940,12 +980,12 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
          */
         OFCondition setTreatmentDeliveryType(const OFString &value, const OFBool check = OFTrue);
 
-        /** set TreatmentTerminationCode (3008,002b)
+        /** set TreatmentTerminationDescription (300a,0730)
          *  @param  value  value to be set (single value only) or "" for no value
-         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @param  check  check 'value' for conformance with VR (ST) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setTreatmentTerminationCode(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setTreatmentTerminationDescription(const OFString &value, const OFBool check = OFTrue);
 
         /** set TreatmentTerminationStatus (3008,002a)
          *  @param  value  value to be set (single value only) or "" for no value
@@ -986,6 +1026,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         DcmDecimalString DeliveredSecondaryMeterset;
         /// DeliveredTreatmentTime (3008,003b) vr=DS, vm=1, type=3
         DcmDecimalString DeliveredTreatmentTime;
+        /// EntityLongLabel (3010,0038) vr=LO, vm=1, type=3
+        DcmLongString EntityLongLabel;
         /// FixationEye (300a,0150) vr=CS, vm=1, type=3
         DcmCodeString FixationEye;
         /// FixationLightAzimuthalAngle (300a,0356) vr=FL, vm=1, type=3
@@ -993,9 +1035,11 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         /// FixationLightPolarAngle (300a,0358) vr=FL, vm=1, type=3
         DcmFloatingPointSingle FixationLightPolarAngle;
         /// GeneralAccessorySequence (300a,0420) vr=SQ, vm=1, type=3
-        DRTGeneralAccessorySequence GeneralAccessorySequence;
+        DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule GeneralAccessorySequence;
         /// IonControlPointDeliverySequence (3008,0041) vr=SQ, vm=1, type=1
         DRTIonControlPointDeliverySequence IonControlPointDeliverySequence;
+        /// MachineSpecificTreatmentTerminationCodeSequence (300a,0716) vr=SQ, vm=1, type=3
+        DRTMachineSpecificTreatmentTerminationCodeSequence MachineSpecificTreatmentTerminationCodeSequence;
         /// ModulatedScanModeType (300a,0309) vr=CS, vm=1, type=1C
         DcmCodeString ModulatedScanModeType;
         /// NumberOfBlocks (300a,00f0) vr=IS, vm=1, type=1
@@ -1020,6 +1064,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         DcmShortString PatientSupportID;
         /// PatientSupportType (300a,0350) vr=CS, vm=1, type=1
         DcmCodeString PatientSupportType;
+        /// RTTreatmentTerminationReasonCodeSequence (300a,0715) vr=SQ, vm=1, type=3
+        DRTRTTreatmentTerminationReasonCodeSequence RTTreatmentTerminationReasonCodeSequence;
         /// RadiationAtomicNumber (300a,0304) vr=IS, vm=1, type=1C
         DcmIntegerString RadiationAtomicNumber;
         /// RadiationChargeState (300a,0306) vr=SS, vm=1, type=1C
@@ -1066,8 +1112,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
         DcmDecimalString SpecifiedTreatmentTime;
         /// TreatmentDeliveryType (300a,00ce) vr=CS, vm=1, type=2
         DcmCodeString TreatmentDeliveryType;
-        /// TreatmentTerminationCode (3008,002b) vr=SH, vm=1, type=3
-        DcmShortString TreatmentTerminationCode;
+        /// TreatmentTerminationDescription (300a,0730) vr=ST, vm=1, type=3
+        DcmShortText TreatmentTerminationDescription;
         /// TreatmentTerminationStatus (3008,002a) vr=CS, vm=1, type=1
         DcmCodeString TreatmentTerminationStatus;
         /// TreatmentVerificationStatus (3008,002c) vr=CS, vm=1, type=2
@@ -1181,13 +1227,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSessionIonBeamSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 5faaf980feba8f6aa677f0fe3f62f148a3920660..a9444fb8d2f9d7f088424acf5539907668269101 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -269,13 +269,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryMeasuredDoseReferenceSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtttrcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtttrcs.h
new file mode 100644 (file)
index 0000000..db67cd7
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class DRTRTTreatmentTerminationReasonCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#ifndef DRTTTRCS_H
+#define DRTTTRCS_H
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/ofstd/oflist.h"        // for standard list class
+#include "dcmtk/dcmrt/drttypes.h"      // module-specific helper class
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
+
+
+/** Interface class for RTTreatmentTerminationReasonCodeSequence (300a,0715)
+ */
+class DCMTK_DCMRT_EXPORT DRTRTTreatmentTerminationReasonCodeSequence
+  : protected DRTTypes
+{
+
+  public:
+
+    /** Item class
+     */
+    class DCMTK_DCMRT_EXPORT Item
+      : protected DRTTypes
+    {
+
+      public:
+
+      // --- constructors, destructor and operators ---
+
+        /** (default) constructor
+         *  @param emptyDefaultItem flag used to mark the empty default item
+         */
+        Item(const OFBool emptyDefaultItem = OFFalse);
+
+        /** copy constructor
+         *  @param copy item object to be copied
+         */
+        Item(const Item &copy);
+
+        /** destructor
+         */
+        virtual ~Item();
+
+        /** assignment operator
+         *  @param copy item object to be copied
+         *  @return reference to this object
+         */
+        Item &operator=(const Item &copy);
+
+      // --- general methods ---
+
+        /** clear all internal member variables
+         */
+        void clear();
+
+        /** check if item is empty
+         *  @return OFTrue if item is empty, OFFalse otherwise
+         */
+        OFBool isEmpty();
+
+        /** check if item is valid, i.e.\ not the empty default item
+         *  @return OFTrue if item is valid, OFFalse otherwise
+         */
+        OFBool isValid() const;
+
+      // --- input/output methods ---
+
+        /** read elements from sequence item
+         *  @param  item    reference to DICOM sequence item from which the elements should be read
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition read(DcmItem &item);
+
+        /** write elements to sequence item
+         *  @param  item    reference to DICOM sequence item to which the elements should be written
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition write(DcmItem &item);
+
+      // --- get DICOM attribute values ---
+
+        /** get CodeMeaning (0008,0104)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
+
+        /** get CodeValue (0008,0100)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeDesignator (0008,0102)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
+
+        /** get CodingSchemeVersion (0008,0103)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionCreatorUID(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupExtensionFlag(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupLocalVersion (0008,0107)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupLocalVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextGroupVersion (0008,0106)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextGroupVersion(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextIdentifier (0008,010f)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextIdentifier(OFString &value, const signed long pos = 0) const;
+
+        /** get ContextUID (0008,0117)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getContextUID(OFString &value, const signed long pos = 0) const;
+
+        /** get LongCodeValue (0008,0119)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResource (0008,0105)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResource(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceName (0008,0122)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceName(OFString &value, const signed long pos = 0) const;
+
+        /** get MappingResourceUID (0008,0118)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getMappingResourceUID(OFString &value, const signed long pos = 0) const;
+
+        /** get URNCodeValue (0008,0120)
+         *  @param  value  reference to variable in which the value should be stored
+         *  @param  pos    index of the value to get (0..vm-1), -1 for all components
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
+      // --- set DICOM attribute values ---
+
+        /** set CodeMeaning (0008,0104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodeValue (0008,0100)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeDesignator (0008,0102)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
+
+        /** set CodingSchemeVersion (0008,0103)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionCreatorUID (0008,010d)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupExtensionFlag (0008,010b)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupExtensionFlag(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupLocalVersion (0008,0107)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupLocalVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextGroupVersion (0008,0106)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (DT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextGroupVersion(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextIdentifier (0008,010f)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextIdentifier(const OFString &value, const OFBool check = OFTrue);
+
+        /** set ContextUID (0008,0117)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setContextUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set LongCodeValue (0008,0119)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UC) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResource (0008,0105)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (CS) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResource(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceName (0008,0122)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LO) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceName(const OFString &value, const OFBool check = OFTrue);
+
+        /** set MappingResourceUID (0008,0118)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UI) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setMappingResourceUID(const OFString &value, const OFBool check = OFTrue);
+
+        /** set URNCodeValue (0008,0120)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (UR) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
+      private:
+
+        /// internal flag used to mark the empty default item
+        /*const*/ OFBool EmptyDefaultItem;
+
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeDesignator;
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
+        DcmShortString CodingSchemeVersion;
+        /// ContextGroupExtensionCreatorUID (0008,010d) vr=UI, vm=1, type=1C
+        DcmUniqueIdentifier ContextGroupExtensionCreatorUID;
+        /// ContextGroupExtensionFlag (0008,010b) vr=CS, vm=1, type=3
+        DcmCodeString ContextGroupExtensionFlag;
+        /// ContextGroupLocalVersion (0008,0107) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupLocalVersion;
+        /// ContextGroupVersion (0008,0106) vr=DT, vm=1, type=1C
+        DcmDateTime ContextGroupVersion;
+        /// ContextIdentifier (0008,010f) vr=CS, vm=1, type=3
+        DcmCodeString ContextIdentifier;
+        /// ContextUID (0008,0117) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
+        DcmCodeString MappingResource;
+        /// MappingResourceName (0008,0122) vr=LO, vm=1, type=3
+        DcmLongString MappingResourceName;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
+
+    };
+
+  // --- constructors, destructor and operators ---
+
+    /** (default) constructor
+     *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
+     */
+    DRTRTTreatmentTerminationReasonCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
+
+    /** copy constructor
+     *  @param copy sequence object to be copied
+     */
+    DRTRTTreatmentTerminationReasonCodeSequence(const DRTRTTreatmentTerminationReasonCodeSequence &copy);
+
+    /** destructor
+     */
+    virtual ~DRTRTTreatmentTerminationReasonCodeSequence();
+
+    /** assignment operator
+     *  @param copy sequence object to be copied
+     *  @return reference to this object
+     */
+    DRTRTTreatmentTerminationReasonCodeSequence &operator=(const DRTRTTreatmentTerminationReasonCodeSequence &copy);
+
+  // --- general methods ---
+
+    /** clear all internal member variables
+     */
+    void clear();
+
+    /** check if sequence is empty
+     *  @return OFTrue if sequence is empty, OFFalse otherwise
+     */
+    OFBool isEmpty();
+
+    /** check if sequence is valid, i.e.\ not the empty default sequence
+     *  @return OFTrue if sequence is valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** get number of items in the sequence
+     *  @return number of items
+     */
+    size_t getNumberOfItems() const;
+
+    /** goto first item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoFirstItem();
+
+    /** goto next item in the sequence
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoNextItem();
+
+    /** goto particular item in the sequence
+     *  @param  num  number of the item to be selected (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num);
+
+    /** get current item in the sequence
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getCurrentItem(Item *&item) const;
+
+    /** get current item in the sequence
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getCurrentItem();
+
+    /** get current item in the sequence
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getCurrentItem() const;
+
+    /** get particular item in the sequence
+     *  @param  num   number of the item to be retrieved (0..num-1)
+     *  @param  item  reference to item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getItem(const size_t num, Item *&item);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &getItem(const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &getItem(const size_t num) const;
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return reference to specified item if successful, empty default item otherwise
+     */
+    Item &operator[](const size_t num);
+
+    /** get particular item in the sequence
+     *  @param  num  number of the item to be retrieved (0..num-1)
+     *  @return const reference to specified item if successful, empty default item otherwise
+     */
+    const Item &operator[](const size_t num) const;
+
+    /** create and add new item to the end of this sequence
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addItem(Item *&item);
+
+    /** create and insert new item into the sequence
+     *  @param  pos   position where the new item is to be inserted (0..num)
+     *  @param  item  reference to new item pointer (result variable)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition insertItem(const size_t pos, Item *&item);
+
+    /** remove particular item from the sequence
+     *  @param  pos  position of the item to be removed (0..num-1)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition removeItem(const size_t pos);
+
+  // --- input/output methods ---
+
+    /** read sequence of items from dataset
+     *  @param  dataset     reference to DICOM dataset from which the sequence should be read
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "1C", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition read(DcmItem &dataset,
+                     const OFString &card,
+                     const OFString &type,
+                     const char *moduleName = NULL);
+
+    /** write sequence of items to dataset
+     *  @param  dataset     reference to DICOM dataset to which the sequence should be written
+     *  @param  card        cardinality (valid range for number of items)
+     *  @param  type        value type (valid value: "1", "2" or something else which is not checked)
+     *  @param  moduleName  optional module/sequence name to be printed (default: "RT object" if NULL)
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition write(DcmItem &dataset,
+                      const OFString &card,
+                      const OFString &type,
+                      const char *moduleName = NULL);
+
+  protected:
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListIterator(Item *) &iterator);
+
+    /** goto particular item in the sequence
+     *  @param  num       number of the item to be selected (0..num-1)
+     *  @param  iterator  list iterator storing the position of the item
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition gotoItem(const size_t num,
+                         OFListConstIterator(Item *) &iterator) const;
+
+  private:
+
+    /// internal flag used to mark the empty default sequence
+    /*const*/ OFBool EmptyDefaultSequence;
+
+    /// list of items in this sequence
+    OFList<Item *>         SequenceOfItems;
+    /// currently selected item
+    OFListIterator(Item *) CurrentItem;
+    /// empty default item
+    Item                   EmptyItem;
+
+};
+
+
+#endif
index 8fa8c62304a4839e9cd2da0676af57c7baa09df9..11cfccd7fcd0fd7eb18f0060dc8104e46c3314d7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -472,13 +472,13 @@ class DCMTK_DCMRT_EXPORT DRTToleranceTableSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index dcd19203da3273c6f352e41b34eb5febecc82134..978de473b568db04009d61e0006ab487ecd1df23 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTUDISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTUDISequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 3742254dea11e1dac99dea54eb112ca53070c1a7..e4be7e1e21ddbe287f9f7a0b555ccdb33b85e707 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -255,13 +255,13 @@ class DCMTK_DCMRT_EXPORT DRTVOILUTSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index f35deabd0b6db6dccd6962956efe88ca419d6467..9388e80dab289de2385e2c2706611e672ea9f8f2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -246,13 +246,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgePositionSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 782509c57cf99b4d26192b2a32670c21f91ce996..a1ddd5f6ed51e63e272b0f6d59a41eb109ebf691 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -223,13 +223,13 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 0d56b72f0b83899024b6f26a9b81996db5ec46d2..f6af2d3fcda97a7dec992ad4aebe7ce5d26474ee 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWADORSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -223,13 +223,13 @@ class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index af72bbf40c57b65e49825c63182241bdefee8964..ac887f9e2d835d16708309c8629267913d2c7d6d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -393,13 +393,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 40df387bc58608d53989ed21c20d6bca9922d272..68b5191d5ad6d5b2c29f4b5b73a6991c68357462 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -239,13 +239,13 @@ class DCMTK_DCMRT_EXPORT DRTXDSRetrievalSequence
      */
     const Item &operator[](const size_t num) const;
 
-    /** add new item to the end of this sequence
+    /** create and add new item to the end of this sequence
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
      */
     OFCondition addItem(Item *&item);
 
-    /** insert new item into the sequence
+    /** create and insert new item into the sequence
      *  @param  pos   position where the new item is to be inserted (0..num)
      *  @param  item  reference to new item pointer (result variable)
      *  @return status, EC_Normal if successful, an error code otherwise
index 104b3c799f9f6d15d403d9a8bf85fa67daed95ce..20972ee07b102a2f82f862e6fc4ed6bb8fdb7c93 100644 (file)
@@ -7,24 +7,27 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtaadcs.cc
   drtadcs.cc
   drtads.cc
+  drtafcs.cc
   drtafs.cc
   drtags.cc
   drtajcs.cc
+  drtancs.cc
+  drtarms.cc
+  drtars.cc
   drtas1.cc
-  drtas5.cc
-  drtas6.cc
-  drtas7.cc
+  drtas2.cc
+  drtas3.cc
+  drtas4.cc
   drtass.cc
   drtbads.cc
   drtbas.cc
   drtbcps.cc
+  drtbl1.cc
   drtbl2.cc
-  drtbl5.cc
   drtbldls.cc
   drtbldps.cc
   drtblds1.cc
-  drtblds5.cc
-  drtblds6.cc
+  drtblds2.cc
   drtbldts.cc
   drtbrcss.cc
   drtbrdrs.cc
@@ -46,15 +49,22 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtcpas.cc
   drtcpis.cc
   drtcps.cc
-  drtcs.cc
   drtcsas.cc
+  drtcs.cc
   drtcshs.cc
   drtcsis.cc
   drtcsrs.cc
   drtcss.cc
+  drtcttcs.cc
+  drtcvcss.cc
+  drtcvdas.cc
+  drtcvis.cc
+  drtdccs.cc
   drtdcs.cc
+  drtdcvs.cc
   drtdddps.cc
   drtddps.cc
+  drtdfss.cc
   drtdias.cc
   drtdimcs.cc
   drtdimrs.cc
@@ -64,18 +74,29 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtds.cc
   drtdspcs.cc
   drtdss.cc
+  drtdtcs.cc
   drtdvhs.cc
   drtdvrrs.cc
   drteas.cc
+  drteblds.cc
+  drteblos.cc
   drtecs.cc
+  drtecvis.cc
+  drtecvs.cc
   drtes.cc
+  drtfbdds.cc
   drtfds.cc
   drtfes.cc
   drtfgs.cc
   drtfgss.cc
   drtfms.cc
   drtfsss.cc
-  drtgas.cc
+  drtgas1.cc
+  drtgas2.cc
+  drtgas3.cc
+  drtgas4.cc
+  drtgas5.cc
+  drtgas6.cc
   drtgmcs.cc
   drtgms.cc
   drtgpis.cc
@@ -88,6 +109,7 @@ DCMTK_ADD_LIBRARY(dcmrt
   drticpds.cc
   drticps.cc
   drtics.cc
+  drtidcs.cc
   drtiis.cc
   drtimage.cc
   drtionpl.cc
@@ -98,9 +120,9 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtitts.cc
   drtiwps.cc
   drtiws.cc
+  drtlsds1.cc
+  drtlsds2.cc
   drtlsds.cc
-  drtlsds6.cc
-  drtlsds7.cc
   drtmacds.cc
   drtmas.cc
   drtmdrs.cc
@@ -108,12 +130,19 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtmps.cc
   drtmris.cc
   drtmss.cc
+  drtmttcs.cc
   drtmucs.cc
+  drtnmas.cc
   drtoas.cc
   drtois.cc
   drtopis.cc
   drtos.cc
+  drtosirs.cc
+  drtpasms.cc
+  drtpass.cc
   drtpbcs.cc
+  drtpbdds.cc
+  drtpbdos.cc
   drtpcs.cc
   drtpcxs.cc
   drtpdecs.cc
@@ -121,9 +150,11 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtpfms.cc
   drtpics.cc
   drtplan.cc
+  drtplos.cc
   drtporcs.cc
   drtporis.cc
   drtppcs.cc
+  drtpros.cc
   drtprsis.cc
   drtpscs.cc
   drtpsics.cc
@@ -132,24 +163,29 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtpvis.cc
   drtqds.cc
   drtras.cc
+  drtrbas1.cc
   drtrbas2.cc
-  drtrbas8.cc
+  drtrbdgs.cc
   drtrbls.cc
   drtrbos1.cc
-  drtrbos6.cc
-  drtrbos7.cc
+  drtrbos2.cc
+  drtrbos3.cc
+  drtrbs1.cc
   drtrbs2.cc
-  drtrbs4.cc
-  drtrbs8.cc
+  drtrbs3.cc
+  drtrbss.cc
   drtrcdrs.cc
   drtrcos.cc
   drtrcps.cc
   drtrcs.cc
-  drtrdros.cc
+  drtrdais.cc
+  drtrdcks.cc
+  drtrdps.cc
   drtrdrs1.cc
-  drtrdrs6.cc
-  drtrdrs8.cc
+  drtrdrs2.cc
+  drtrdrs3.cc
   drtrds.cc
+  drtrdsis.cc
   drtrecs.cc
   drtrfgs.cc
   drtrfors.cc
@@ -159,34 +195,31 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtrlsds.cc
   drtrmdrs.cc
   drtrms.cc
-  drtrmss6.cc
-  drtrmss7.cc
+  drtrmss1.cc
+  drtrmss2.cc
   drtrpcs.cc
   drtrpis.cc
   drtrppcs.cc
   drtrpphs.cc
+  drtrpprs.cc
   drtrpps.cc
   drtrppss.cc
   drtrps.cc
   drtrris1.cc
-  drtrris6.cc
-  drtrris9.cc
+  drtrris2.cc
+  drtrris3.cc
   drtrrms.cc
   drtrros.cc
   drtrrpcs.cc
   drtrrros.cc
   drtrrs.cc
   drtrrshs.cc
-  drtrrtps.cc
-  drtrrtps3.cc
-  drtrrtps4.cc
-  drtrrtps5.cc
   drtrscs.cc
   drtrsers.cc
   drtrses.cc
+  drtrshs1.cc
+  drtrshs2.cc
   drtrshs.cc
-  drtrshs6.cc
-  drtrshs7.cc
   drtrsis.cc
   drtrsns.cc
   drtrsos.cc
@@ -194,13 +227,19 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtrss.cc
   drtrsss.cc
   drtrsts.cc
+  drtrtps1.cc
+  drtrtps2.cc
+  drtrtps3.cc
+  drtrtps4.cc
+  drtrtrs1.cc
   drtrtrs2.cc
-  drtrtrs4.cc
+  drtrvcs.cc
   drtrvis.cc
   drtrws.cc
   drtrwvms.cc
   drtscris.cc
   drtscs.cc
+  drtscvs.cc
   drtsdcs.cc
   drtsds.cc
   drtshds.cc
@@ -210,18 +249,23 @@ DCMTK_ADD_LIBRARY(dcmrt
   drtspccs.cc
   drtspcs.cc
   drtspgis.cc
+  drtsppcs.cc
   drtsptcs.cc
   drtss.cc
   drtssrcs.cc
   drtssrs.cc
   drtsss.cc
   drtstrct.cc
-  drttms0.cc
-  drttms9.cc
+  drttms1.cc
+  drttms2.cc
+  drttrccs.cc
   drttreat.cc
+  drttrtcs.cc
   drttscds.cc
+  drttscs.cc
   drttsibs.cc
   drttsmds.cc
+  drtttrcs.cc
   drttts.cc
   drttypes.cc
   drtudis.cc
index 1f804dc439e96aaa0d44f72aa8b97ea9586fabc9..6adf41973fa23c0224a28f0787d5e0bbf3321e76 100644 (file)
@@ -9,6 +9,10 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23,7 +27,6 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -53,10 +56,7 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -119,16 +119,20 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdvhs.h \
  ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
@@ -146,8 +150,9 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -159,19 +164,22 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtplos.h \
+ ../include/dcmtk/dcmrt/seq/drtpros.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
  ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -179,15 +187,15 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps1.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas1.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs1.h \
  ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
@@ -197,10 +205,10 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspgis.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h \
- ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
+ ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/stringop.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/restrict.def
 drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drmimage.h ../include/dcmtk/dcmrt/drtimage.h \
  ../include/dcmtk/dcmrt/drttypes.h \
@@ -212,6 +220,10 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -226,7 +238,6 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -256,10 +267,7 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -322,27 +330,39 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcgis.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
  ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \
  ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtes.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \
+ ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds2.h \
+ ../include/dcmtk/dcmrt/seq/drtbl2.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtgas4.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
  ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgms.h \
  ../include/dcmtk/dcmrt/seq/drtgmcs.h \
@@ -358,7 +378,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmls.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
  ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -370,6 +391,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
  ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
@@ -377,6 +400,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
@@ -385,7 +410,8 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps4.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
  ../include/dcmtk/dcmrt/seq/drtras.h \
@@ -399,7 +425,7 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/seq/drtvls.h \
+ ../include/dcmtk/dcmrt/seq/drtvls.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dimoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -428,6 +454,10 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -442,7 +472,6 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -472,10 +501,7 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -542,21 +568,33 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcshs.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
+ ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \
  ../include/dcmtk/dcmrt/seq/drtcps.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtgas2.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpvis.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h \
  ../include/dcmtk/dcmrt/seq/drtrbos1.h \
  ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
@@ -570,9 +608,14 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs3.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
  ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \
  ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
@@ -584,6 +627,7 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
  ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
  ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
  ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
@@ -592,11 +636,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
  ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h \
  ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
@@ -604,6 +645,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
@@ -612,7 +655,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps2.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
  ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
@@ -628,8 +672,8 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../include/dcmtk/dcmrt/seq/drttts.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drmsrch.h
+ ../include/dcmtk/dcmrt/seq/drttms1.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h ../include/dcmtk/dcmrt/drmsrch.h
 drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drmstrct.h ../include/dcmtk/dcmrt/drtstrct.h \
  ../include/dcmtk/dcmrt/drttypes.h \
@@ -641,6 +685,10 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -655,7 +703,6 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -685,10 +732,7 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -753,14 +797,17 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
@@ -777,6 +824,7 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
  ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
  ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
@@ -795,7 +843,11 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
  ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrros.h \
+ ../include/dcmtk/dcmrt/seq/drtsppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrros.h ../include/dcmtk/dcmrt/seq/drtars.h \
+ ../include/dcmtk/dcmrt/seq/drtarms.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
  ../include/dcmtk/dcmrt/seq/drtrics.h \
@@ -803,7 +855,11 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrtcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
@@ -815,6 +871,7 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
  ../include/dcmtk/dcmrt/seq/drtras.h \
@@ -828,8 +885,20 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drmsrch.h
+ ../include/dcmtk/dcmrt/seq/drtcvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdais.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drmsrch.h
 drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -842,6 +911,10 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -856,7 +929,6 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -885,10 +957,7 @@ drtaadcs.o: drtaadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -963,6 +1032,10 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -977,7 +1050,6 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1006,10 +1078,7 @@ drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1084,6 +1153,10 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1098,7 +1171,6 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1127,10 +1199,7 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1193,8 +1262,8 @@ drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h \
+drtafcs.o: drtafcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -1205,6 +1274,10 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1219,7 +1292,6 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1248,10 +1320,7 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1312,9 +1381,10 @@ drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -1325,6 +1395,10 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1339,7 +1413,6 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1368,10 +1441,7 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1433,8 +1503,8 @@ drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtajcs.h \
+drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtags.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -1445,6 +1515,10 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1459,7 +1533,6 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1488,10 +1561,7 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1552,10 +1622,9 @@ drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtas1.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -1566,6 +1635,10 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1580,7 +1653,6 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1609,10 +1681,7 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1674,9 +1743,9 @@ drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtags.h
-drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtancs.o: drtancs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -1687,6 +1756,10 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1701,7 +1774,6 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1730,10 +1802,7 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1795,9 +1864,9 @@ drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtags.h
-drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtas6.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtarms.o: drtarms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtarms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -1808,6 +1877,10 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1822,7 +1895,6 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1851,10 +1923,7 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -1915,9 +1984,10 @@ drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtas7.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtars.o: drtars.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -1928,6 +1998,10 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -1942,7 +2016,6 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -1971,10 +2044,7 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2035,9 +2105,10 @@ drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtass.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtarms.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtas1.o: drtas1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtas1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2048,6 +2119,10 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2062,7 +2137,6 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2091,10 +2165,7 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2156,13 +2227,9 @@ drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h
-drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbads.h \
+ ../include/dcmtk/dcmrt/seq/drtags.h
+drtas2.o: drtas2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtas2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2173,6 +2240,10 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2187,7 +2258,6 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2216,10 +2286,7 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2280,9 +2347,10 @@ drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbas.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtags.h
+drtas3.o: drtas3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtas3.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2293,6 +2361,10 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2307,7 +2379,6 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2336,10 +2407,7 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2400,10 +2468,9 @@ drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtas4.o: drtas4.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtas4.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2414,6 +2481,10 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2428,7 +2499,6 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2457,10 +2527,7 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2521,10 +2588,9 @@ drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h
-drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtass.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2535,6 +2601,10 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2549,7 +2619,6 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2578,10 +2647,7 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2642,9 +2708,14 @@ drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \
+ ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrris3.h
+drtbads.o: drtbads.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbads.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2655,6 +2726,10 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2669,7 +2744,6 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2698,10 +2772,7 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2763,8 +2834,8 @@ drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbldls.h \
+drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2775,6 +2846,10 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2789,7 +2864,6 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2818,10 +2892,7 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -2882,9 +2953,10 @@ drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -2895,6 +2967,10 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2909,7 +2985,6 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -2938,10 +3013,7 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3002,9 +3074,10 @@ drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtblds1.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h
+drtbl1.o: drtbl1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbl1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3015,6 +3088,10 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3029,7 +3106,6 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3058,10 +3134,7 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3123,8 +3196,8 @@ drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
+drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbl2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3135,6 +3208,10 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3149,7 +3226,6 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3178,10 +3254,7 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3243,8 +3316,8 @@ drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtblds6.h \
+drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbldls.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3255,6 +3328,10 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3269,7 +3346,6 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3298,10 +3374,7 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3363,8 +3436,8 @@ drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h \
+drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3375,6 +3448,10 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3389,7 +3466,6 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3418,10 +3494,7 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3483,8 +3556,8 @@ drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtblds1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3495,6 +3568,10 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3509,7 +3586,6 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3538,10 +3614,7 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3602,10 +3675,9 @@ drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtblds2.o: drtblds2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtblds2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3616,6 +3688,10 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3630,7 +3706,6 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3659,10 +3734,7 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3724,8 +3796,8 @@ drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
+drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3736,6 +3808,10 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3750,7 +3826,6 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3779,10 +3854,7 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3843,11 +3915,9 @@ drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3858,6 +3928,10 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -3872,7 +3946,6 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -3901,10 +3974,7 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -3966,20 +4036,9 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds1.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
- ../include/dcmtk/dcmrt/seq/drtcps.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h \
- ../include/dcmtk/dcmrt/seq/drtrbos1.h \
- ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h
-drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbss.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3990,6 +4049,10 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4004,7 +4067,6 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4033,10 +4095,7 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4098,8 +4157,8 @@ drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4110,6 +4169,10 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4124,7 +4187,6 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4153,10 +4215,7 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4217,9 +4276,11 @@ drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcbars.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4230,6 +4291,10 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4244,7 +4309,6 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4273,10 +4337,7 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4338,9 +4399,31 @@ drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtecs.h
-drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds1.h \
+ ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtgas2.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpvis.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos1.h \
+ ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h
+drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4351,6 +4434,10 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4365,7 +4452,6 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4394,10 +4480,7 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4458,10 +4541,9 @@ drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4472,6 +4554,10 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4486,7 +4572,6 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4515,10 +4600,7 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4580,8 +4662,8 @@ drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcdrs.h \
+drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4592,6 +4674,10 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4606,7 +4692,6 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4635,10 +4720,7 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4699,9 +4781,10 @@ drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4712,6 +4795,10 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4726,7 +4813,6 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4755,10 +4841,7 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4820,11 +4903,9 @@ drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h
-drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcgis.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4835,6 +4916,10 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4849,7 +4934,6 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4878,10 +4962,7 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -4943,8 +5024,8 @@ drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtchs.h \
+drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4955,6 +5036,10 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -4969,7 +5054,6 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -4998,10 +5082,7 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5062,12 +5143,9 @@ drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbcps.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h
-drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtces.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5078,6 +5156,10 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5092,7 +5174,6 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5121,10 +5202,7 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5186,12 +5264,13 @@ drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
+drtcgis.o: drtcgis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5202,6 +5281,10 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5216,7 +5299,6 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5245,10 +5327,7 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5310,8 +5389,8 @@ drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
+drtchs.o: drtchs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5322,6 +5401,10 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5336,7 +5419,6 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5365,10 +5447,7 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5430,9 +5509,11 @@ drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h
+drtcims.o: drtcims.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5443,6 +5524,10 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5457,7 +5542,6 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5486,10 +5570,7 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5550,10 +5631,14 @@ drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtcis.o: drtcis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
@@ -5563,6 +5648,10 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5577,7 +5666,6 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5606,10 +5694,7 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5671,8 +5756,8 @@ drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h \
+drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5683,6 +5768,10 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5697,7 +5786,6 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5726,10 +5814,7 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5791,10 +5876,9 @@ drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcps.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5805,6 +5889,10 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5819,7 +5907,6 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5848,10 +5935,7 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -5912,13 +5996,9 @@ drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h
-drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5929,6 +6009,10 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -5943,7 +6027,6 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -5972,10 +6055,7 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6036,10 +6116,9 @@ drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h
-drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcpis.o: drtcpis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6050,6 +6129,10 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6064,7 +6147,6 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6093,10 +6175,7 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6157,9 +6236,12 @@ drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6170,6 +6252,10 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6184,7 +6270,6 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6213,10 +6298,7 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6277,9 +6359,15 @@ drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h
+drtcs.o: drtcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6290,6 +6378,10 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6304,7 +6396,6 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6333,10 +6424,7 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6398,9 +6486,9 @@ drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h
-drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h
+drtcsas.o: drtcsas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6411,6 +6499,10 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6425,7 +6517,6 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6454,10 +6545,7 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6519,8 +6607,8 @@ drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h \
+drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6531,6 +6619,10 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6545,7 +6637,6 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6574,10 +6665,7 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6638,10 +6726,9 @@ drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6652,6 +6739,10 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6666,7 +6757,6 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6695,10 +6785,7 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6760,9 +6847,9 @@ drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdddps.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h
+drtcsrs.o: drtcsrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6773,6 +6860,10 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6787,7 +6878,6 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6816,10 +6906,7 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -6881,8 +6968,8 @@ drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtddps.h \
+drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6893,6 +6980,10 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -6907,7 +6998,6 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -6936,10 +7026,7 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7000,9 +7087,10 @@ drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcttcs.o: drtcttcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7013,6 +7101,10 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7027,7 +7119,6 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7056,10 +7147,7 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7120,9 +7208,10 @@ drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcvcss.o: drtcvcss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7133,6 +7222,10 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7147,7 +7240,6 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7176,10 +7268,7 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7241,9 +7330,9 @@ drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h
+drtcvdas.o: drtcvdas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7254,6 +7343,10 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7268,7 +7361,6 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7297,10 +7389,7 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7361,9 +7450,11 @@ drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h
+drtcvis.o: drtcvis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcvis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7374,6 +7465,10 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7388,7 +7483,6 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7417,10 +7511,7 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7481,17 +7572,33 @@ drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h
+drtdccs.o: drtdccs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7506,7 +7613,6 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7529,17 +7635,13 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7600,91 +7702,9 @@ drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdvhs.h \
- ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
- ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \
- ../include/dcmtk/dcmrt/seq/drtgpis.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
- ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
- ../include/dcmtk/dcmrt/seq/drtrwvms.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
- ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
- ../include/dcmtk/dcmrt/seq/drtspgis.h \
- ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
- ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
-drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7695,6 +7715,10 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7709,7 +7733,6 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7738,10 +7761,7 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7802,9 +7822,10 @@ drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdcvs.o: drtdcvs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7815,6 +7836,10 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7829,7 +7854,6 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7858,10 +7882,7 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -7923,9 +7944,14 @@ drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h
+drtdddps.o: drtdddps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdddps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -7936,6 +7962,10 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -7950,7 +7980,6 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -7979,10 +8008,7 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8043,10 +8069,9 @@ drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtddps.o: drtddps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtddps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8057,6 +8082,10 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8071,7 +8100,6 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8100,10 +8128,7 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8164,11 +8189,9 @@ drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdvhs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtdfss.o: drtdfss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8179,6 +8202,10 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8193,7 +8220,6 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8222,10 +8248,7 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8286,10 +8309,9 @@ drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdvrrs.h
-drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtdias.o: drtdias.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8300,6 +8322,10 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8314,7 +8340,6 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8343,10 +8368,7 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8408,8 +8430,8 @@ drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drteas.h \
+drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8420,6 +8442,10 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8434,7 +8460,6 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8463,10 +8488,7 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8527,9 +8549,10 @@ drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8540,6 +8563,10 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8554,7 +8581,6 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8583,10 +8609,7 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8648,8 +8671,8 @@ drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtes.h \
+drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8660,6 +8683,10 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8674,7 +8701,6 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8703,10 +8729,7 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8767,23 +8790,21 @@ drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h
-drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtdose.o: drtdose.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8798,7 +8819,6 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8821,16 +8841,14 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -8891,9 +8909,97 @@ drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdvhs.h \
+ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfes.h \
+ ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtplos.h \
+ ../include/dcmtk/dcmrt/seq/drtpros.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps1.h \
+ ../include/dcmtk/dcmrt/seq/drtrfgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas1.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h
+drtdrs.o: drtdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -8904,6 +9010,10 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -8918,7 +9028,6 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -8947,10 +9056,7 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9012,8 +9118,8 @@ drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h \
+drtds.o: drtds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9024,6 +9130,10 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9038,7 +9148,6 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9067,10 +9176,7 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9132,12 +9238,9 @@ drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h
-drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfgss.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9148,6 +9251,10 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9162,7 +9269,6 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9191,10 +9297,7 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9256,9 +9359,9 @@ drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtfsss.h
-drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfms.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdss.o: drtdss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9269,6 +9372,10 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9283,7 +9390,6 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9312,10 +9418,7 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9376,9 +9479,11 @@ drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtfsss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdtcs.o: drtdtcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9389,6 +9494,10 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9403,7 +9512,6 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9432,10 +9540,7 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9496,9 +9601,10 @@ drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtdvhs.o: drtdvhs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdvhs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9509,6 +9615,10 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9523,7 +9633,6 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9552,10 +9661,7 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9616,9 +9722,10 @@ drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdvrrs.h
+drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9629,6 +9736,10 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9643,7 +9754,6 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9672,10 +9782,7 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9736,10 +9843,9 @@ drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtgms.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9750,6 +9856,10 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9764,7 +9874,6 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9793,10 +9902,7 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9857,10 +9963,9 @@ drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtgmcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
-drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drteblds.o: drteblds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drteblds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9871,6 +9976,10 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -9885,7 +9994,6 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -9914,10 +10022,7 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -9979,12 +10084,13 @@ drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
- ../include/dcmtk/dcmrt/seq/drtajcs.h
-drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h
+drteblos.o: drteblos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -9995,6 +10101,10 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10009,7 +10119,6 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10038,10 +10147,7 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10102,9 +10208,10 @@ drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h
+drtecs.o: drtecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10115,6 +10222,10 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10129,7 +10240,6 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10158,10 +10268,7 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10223,8 +10330,8 @@ drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
+drtecvis.o: drtecvis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10235,6 +10342,10 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10249,7 +10360,6 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10278,10 +10388,7 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10343,8 +10450,8 @@ drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiblds.h \
+drtecvs.o: drtecvs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10355,6 +10462,10 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10369,7 +10480,6 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10398,10 +10508,7 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10462,9 +10569,10 @@ drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h
+drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtes.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10475,6 +10583,10 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10489,7 +10601,6 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10518,10 +10629,7 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10583,9 +10691,15 @@ drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbss.h
-drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtibs.h \
+ ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds2.h \
+ ../include/dcmtk/dcmrt/seq/drtbl2.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtgas4.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h
+drtfbdds.o: drtfbdds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10596,6 +10710,10 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10610,7 +10728,6 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10639,10 +10756,7 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10703,27 +10817,9 @@ drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtas6.h ../include/dcmtk/dcmrt/seq/drtddps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
- ../include/dcmtk/dcmrt/seq/drticps.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
- ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
- ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
- ../include/dcmtk/dcmrt/seq/drtrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrbos6.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h \
- ../include/dcmtk/dcmrt/seq/drtrris6.h \
- ../include/dcmtk/dcmrt/seq/drtsns.h
-drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drticpds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtfds.o: drtfds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10734,6 +10830,10 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10748,7 +10848,6 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10777,10 +10876,7 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10841,17 +10937,9 @@ drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
- ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h
-drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfes.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10862,6 +10950,10 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -10876,7 +10968,6 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -10905,10 +10996,7 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -10969,15 +11057,9 @@ drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h
-drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -10988,6 +11070,10 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -11002,7 +11088,6 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -11031,10 +11116,7 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -11096,9 +11178,19 @@ drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs3.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h
+drtfgss.o: drtfgss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfgss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11109,6 +11201,10 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -11123,7 +11219,6 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -11152,10 +11247,7 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -11216,17 +11308,24 @@ drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtfsss.h
+drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfms.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -11241,7 +11340,6 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -11264,17 +11362,13 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -11335,49 +11429,3168 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtcgis.h \
- ../include/dcmtk/dcmrt/seq/drtcbars.h \
- ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \
- ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtes.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
- ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgms.h \
- ../include/dcmtk/dcmrt/seq/drtgmcs.h \
- ../include/dcmtk/dcmrt/seq/drtgpis.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtmls.h \
- ../include/dcmtk/dcmrt/seq/drtmacds.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtfsss.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtgas1.o: drtgas1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgas1.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtgas2.o: drtgas2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgas2.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtgas3.o: drtgas3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgas3.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtgas4.o: drtgas4.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgas4.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtgas5.o: drtgas5.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgas5.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtgas6.o: drtgas6.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgas6.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtgmcs.o: drtgmcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtgms.o: drtgms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgms.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtgmcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtgpis.o: drtgpis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiblds.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbss.h
+drtibs.o: drtibs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtibs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtas3.h ../include/dcmtk/dcmrt/seq/drtddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas5.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtiblds.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
+ ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds1.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss1.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos2.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h \
+ ../include/dcmtk/dcmrt/seq/drtrris2.h \
+ ../include/dcmtk/dcmrt/seq/drtsns.h
+drticpds.o: drticpds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drticpds.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss2.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs2.h
+drticps.o: drticps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds1.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss1.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs2.h
+drtics.o: drtics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtidcs.o: drtidcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtiis.o: drtiis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h \
+ ../include/dcmtk/dcmrt/seq/drtcbars.h \
+ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
+ ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtds.h \
+ ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \
+ ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds2.h \
+ ../include/dcmtk/dcmrt/seq/drtbl2.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtgas4.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
+ ../include/dcmtk/dcmrt/seq/drtfes.h ../include/dcmtk/dcmrt/seq/drtgms.h \
+ ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtiis.h ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h \
+ ../include/dcmtk/dcmrt/seq/drtmacds.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps4.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drtvls.h
+drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtionpl.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs3.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtgms.h \
+ ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas3.h \
+ ../include/dcmtk/dcmrt/seq/drtddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas5.h \
+ ../include/dcmtk/dcmrt/seq/drtiblds.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
+ ../include/dcmtk/dcmrt/seq/drticps.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds1.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss1.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos2.h \
+ ../include/dcmtk/dcmrt/seq/drtrris2.h \
+ ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h
+drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \
+ ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \
+ ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtmdrs.h ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
  ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
  ../include/dcmtk/dcmrt/seq/drtcncs.h \
  ../include/dcmtk/dcmrt/seq/drtcims.h \
@@ -11389,9 +14602,9 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrwvms.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
@@ -11400,10 +14613,12 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps3.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
@@ -11414,17 +14629,2337 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/seq/drtvls.h
-drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtionpl.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../include/dcmtk/dcmrt/seq/drttms2.h \
+ ../include/dcmtk/dcmrt/seq/drttsibs.h \
+ ../include/dcmtk/dcmrt/seq/drtas4.h \
+ ../include/dcmtk/dcmrt/seq/drtbldls.h \
+ ../include/dcmtk/dcmrt/seq/drtdddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas6.h \
+ ../include/dcmtk/dcmrt/seq/drticpds.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss2.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs2.h \
+ ../include/dcmtk/dcmrt/seq/drtmttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtttrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbls.h \
+ ../include/dcmtk/dcmrt/seq/drtrbss.h \
+ ../include/dcmtk/dcmrt/seq/drtrcos.h \
+ ../include/dcmtk/dcmrt/seq/drtrlsds.h \
+ ../include/dcmtk/dcmrt/seq/drtrrms.h \
+ ../include/dcmtk/dcmrt/seq/drtrrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos3.h \
+ ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvis.h \
+ ../include/dcmtk/dcmrt/seq/drttscds.h \
+ ../include/dcmtk/dcmrt/seq/drttsmds.h
+drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtircs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtitts.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h
+drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtiws.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtlsds1.o: drtlsds1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds1.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtlsds2.o: drtlsds2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds2.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmacds.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmdrs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtmttcs.o: drtmttcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmttcs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtnmas.o: drtnmas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -11439,7 +16974,6 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -11462,17 +16996,13 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -11534,108 +17064,146 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtnmas.h
+drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtgms.h \
- ../include/dcmtk/dcmrt/seq/drtgmcs.h \
- ../include/dcmtk/dcmrt/seq/drtgpis.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtibs.h ../include/dcmtk/dcmrt/seq/drtas6.h \
- ../include/dcmtk/dcmrt/seq/drtddps.h ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
- ../include/dcmtk/dcmrt/seq/drticps.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
- ../include/dcmtk/dcmrt/seq/drtircs.h ../include/dcmtk/dcmrt/seq/drtiws.h \
- ../include/dcmtk/dcmrt/seq/drtlsds.h ../include/dcmtk/dcmrt/seq/drtrms.h \
- ../include/dcmtk/dcmrt/seq/drtrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrbos6.h \
- ../include/dcmtk/dcmrt/seq/drtrris6.h \
- ../include/dcmtk/dcmrt/seq/drtsns.h ../include/dcmtk/dcmrt/seq/drtitts.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
- ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
- ../include/dcmtk/dcmrt/seq/drtsins.h \
- ../include/dcmtk/dcmrt/seq/drtspgis.h \
- ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
- ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
-drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtiontr.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
+ ../../ofstd/include/dcmtk/ofstd/ofvector.h \
+ ../../oflog/include/dcmtk/oflog/oflog.h \
+ ../../oflog/include/dcmtk/oflog/logger.h \
+ ../../oflog/include/dcmtk/oflog/config.h \
+ ../../oflog/include/dcmtk/oflog/config/defines.h \
+ ../../oflog/include/dcmtk/oflog/helpers/threadcf.h \
+ ../../oflog/include/dcmtk/oflog/loglevel.h \
+ ../../oflog/include/dcmtk/oflog/tstring.h \
+ ../../oflog/include/dcmtk/oflog/tchar.h \
+ ../../oflog/include/dcmtk/oflog/spi/apndatch.h \
+ ../../oflog/include/dcmtk/oflog/appender.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../../ofstd/include/dcmtk/ofstd/ofutil.h \
+ ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../oflog/include/dcmtk/oflog/layout.h \
+ ../../oflog/include/dcmtk/oflog/streams.h \
+ ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
+ ../../oflog/include/dcmtk/oflog/thread/syncprim.h \
+ ../../oflog/include/dcmtk/oflog/spi/filter.h \
+ ../../oflog/include/dcmtk/oflog/helpers/lockfile.h \
+ ../../oflog/include/dcmtk/oflog/spi/logfact.h \
+ ../../oflog/include/dcmtk/oflog/logmacro.h \
+ ../../oflog/include/dcmtk/oflog/helpers/snprintf.h \
+ ../../oflog/include/dcmtk/oflog/tracelog.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
+ ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
+ ../../ofstd/include/dcmtk/ofstd/offile.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../ofstd/include/dcmtk/ofstd/oferror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
+ ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcmetinf.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcfilefo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdicdir.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmap.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdirrec.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrulup.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrul.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixseq.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcofsetl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrae.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrda.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdate.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrdt.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdatime.h \
+ ../../ofstd/include/dcmtk/ofstd/oftime.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrtm.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrur.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrlt.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpn.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsh.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrst.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruc.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrut.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrobow.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpixel.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrpobw.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcovlay.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrsv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvruv.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrfd.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../ofstd/include/dcmtk/ofstd/oftypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -11650,7 +17218,6 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -11673,17 +17240,13 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -11745,106 +17308,12 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \
- ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \
- ../include/dcmtk/dcmrt/seq/drtgmcs.h \
- ../include/dcmtk/dcmrt/seq/drtgpis.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtmdrs.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
- ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
- ../include/dcmtk/dcmrt/seq/drtsins.h \
- ../include/dcmtk/dcmrt/seq/drtspgis.h \
- ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
- ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drttms0.h \
- ../include/dcmtk/dcmrt/seq/drttsibs.h \
- ../include/dcmtk/dcmrt/seq/drtas7.h \
- ../include/dcmtk/dcmrt/seq/drtbldls.h \
- ../include/dcmtk/dcmrt/seq/drtdddps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drticpds.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h \
- ../include/dcmtk/dcmrt/seq/drtrbls.h \
- ../include/dcmtk/dcmrt/seq/drtrcos.h \
- ../include/dcmtk/dcmrt/seq/drtrlsds.h \
- ../include/dcmtk/dcmrt/seq/drtrrms.h \
- ../include/dcmtk/dcmrt/seq/drtrrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \
- ../include/dcmtk/dcmrt/seq/drtrbos7.h \
- ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
- ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
- ../include/dcmtk/dcmrt/seq/drtrvis.h \
- ../include/dcmtk/dcmrt/seq/drttscds.h \
- ../include/dcmtk/dcmrt/seq/drttsmds.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
-drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11855,6 +17324,10 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -11869,7 +17342,6 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -11898,10 +17370,7 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -11963,11 +17432,11 @@ drtipiqs.o: drtipiqs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
- ../include/dcmtk/dcmrt/seq/drtajcs.h
-drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtircs.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtosirs.o: drtosirs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -11978,6 +17447,10 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -11992,7 +17465,6 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12021,10 +17493,7 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12086,8 +17555,8 @@ drtircs.o: drtircs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
+drtpasms.o: drtpasms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12098,6 +17567,10 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12112,7 +17585,6 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12141,10 +17613,7 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12205,9 +17674,10 @@ drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtitts.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpass.o: drtpass.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12218,6 +17688,10 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12232,7 +17706,6 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12261,10 +17734,7 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12326,9 +17796,10 @@ drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h
-drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h
+drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12339,6 +17810,10 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12353,7 +17828,6 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12382,10 +17856,7 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12446,9 +17917,10 @@ drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtiws.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpbdds.o: drtpbdds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12459,6 +17931,10 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12473,7 +17949,6 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12502,10 +17977,7 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12566,9 +18038,11 @@ drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtlsds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpbdos.o: drtpbdos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12579,6 +18053,10 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12593,7 +18071,6 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12622,10 +18099,7 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12686,9 +18160,10 @@ drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtlsds6.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12699,6 +18174,10 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12713,7 +18192,6 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12742,10 +18220,7 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12806,9 +18281,10 @@ drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12819,6 +18295,10 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12833,7 +18313,6 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12862,10 +18341,7 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -12926,9 +18402,14 @@ drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmacds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12939,6 +18420,10 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -12953,7 +18438,6 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -12982,10 +18466,7 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13047,9 +18528,10 @@ drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtecs.h
-drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h
+drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13060,6 +18542,10 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13074,7 +18560,6 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13103,10 +18588,7 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13168,8 +18650,8 @@ drtmas.o: drtmas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmdrs.h \
+drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13180,6 +18662,10 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13194,7 +18680,6 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13223,10 +18708,7 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13288,8 +18770,8 @@ drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmls.h \
+drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13300,6 +18782,10 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13314,7 +18800,6 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13343,10 +18828,7 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13407,19 +18889,22 @@ drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtplan.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13434,7 +18919,6 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13457,16 +18941,14 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13527,9 +19009,120 @@ drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
+ ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \
+ ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds1.h \
+ ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtcps.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtgas2.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpvis.h \
+ ../include/dcmtk/dcmrt/seq/drtpfms.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos1.h \
+ ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs3.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
+ ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../include/dcmtk/dcmrt/seq/drttts.h \
+ ../include/dcmtk/dcmrt/seq/drtbldts.h \
+ ../include/dcmtk/dcmrt/seq/drttms1.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h
+drtplos.o: drtplos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtplos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13540,6 +19133,10 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13554,7 +19151,6 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13583,10 +19179,7 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13647,9 +19240,14 @@ drtmris.o: drtmris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtpros.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrsss.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h
+drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13660,6 +19258,10 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13674,7 +19276,6 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13703,10 +19304,7 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13767,9 +19365,10 @@ drtmss.o: drtmss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13780,6 +19379,10 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13794,7 +19397,6 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13823,10 +19425,7 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -13888,9 +19487,11 @@ drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13901,6 +19502,10 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -13915,7 +19520,6 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -13944,10 +19548,7 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14009,9 +19610,13 @@ drtoas.o: drtoas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h
-drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtpros.o: drtpros.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpros.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14022,6 +19627,10 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14036,7 +19645,6 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14065,10 +19673,7 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14129,11 +19734,9 @@ drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14144,6 +19747,10 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14158,7 +19765,6 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14187,10 +19793,7 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14252,12 +19855,11 @@ drtopis.o: drtopis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
- ../include/dcmtk/dcmrt/seq/drtajcs.h
-drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14268,6 +19870,10 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14282,7 +19888,6 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14311,10 +19916,7 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14376,10 +19978,9 @@ drtos.o: drtos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h
-drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14390,6 +19991,10 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14404,7 +20009,6 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14433,10 +20037,7 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14499,8 +20100,8 @@ drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
+drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14511,6 +20112,10 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14525,7 +20130,6 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14554,10 +20158,7 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14619,9 +20220,11 @@ drtpcs.o: drtpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h
+drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14632,6 +20235,10 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14646,7 +20253,6 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14675,10 +20281,7 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14739,14 +20342,9 @@ drtpcxs.o: drtpcxs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtpvis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14757,6 +20355,10 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14771,7 +20373,6 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14800,10 +20401,7 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14864,11 +20462,9 @@ drtpdecs.o: drtpdecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
- ../include/dcmtk/dcmrt/seq/drtpdeds.h
-drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14879,6 +20475,10 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -14893,7 +20493,6 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -14922,10 +20521,7 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -14986,9 +20582,14 @@ drtpdeds.o: drtpdeds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -14999,6 +20600,10 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15013,7 +20618,6 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15042,10 +20646,7 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -15106,9 +20707,19 @@ drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtrbas1.o: drtrbas1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15119,6 +20730,10 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15133,7 +20748,6 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15162,10 +20776,7 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -15226,18 +20837,23 @@ drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtplan.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15252,7 +20868,6 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15275,17 +20890,13 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -15346,102 +20957,9 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
- ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
- ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
- ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds1.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
- ../include/dcmtk/dcmrt/seq/drtcps.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \
- ../include/dcmtk/dcmrt/seq/drtpfms.h \
- ../include/dcmtk/dcmrt/seq/drtrbos1.h \
- ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
- ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \
- ../include/dcmtk/dcmrt/seq/drtgpis.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
- ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
- ../include/dcmtk/dcmrt/seq/drtsins.h \
- ../include/dcmtk/dcmrt/seq/drtspgis.h ../include/dcmtk/dcmrt/seq/drtss.h \
- ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
- ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drttts.h \
- ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
-drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbdgs.o: drtrbdgs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15452,6 +20970,10 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15466,7 +20988,6 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15495,10 +21016,7 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -15559,10 +21077,9 @@ drtporcs.o: drtporcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbls.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15573,6 +21090,10 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15587,7 +21108,6 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15616,10 +21136,7 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -15681,10 +21198,9 @@ drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbss.h
+drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15695,6 +21211,10 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15709,7 +21229,6 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15738,10 +21257,7 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -15802,14 +21318,9 @@ drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbos2.o: drtrbos2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15820,6 +21331,10 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15834,7 +21349,6 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15863,10 +21377,7 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -15927,11 +21438,9 @@ drtprsis.o: drtprsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbos3.o: drtrbos3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos3.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -15942,6 +21451,10 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -15956,7 +21469,6 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -15985,10 +21497,7 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16049,10 +21558,9 @@ drtpscs.o: drtpscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrbs1.o: drtrbs1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16063,6 +21571,10 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16077,7 +21589,6 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16106,10 +21617,7 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16171,9 +21679,9 @@ drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpss.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h
+drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16184,6 +21692,10 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16198,7 +21710,6 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16227,10 +21738,7 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16292,11 +21800,14 @@ drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h ../include/dcmtk/dcmrt/seq/drtsds.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h
-drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtrbs3.o: drtrbs3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs3.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16307,6 +21818,10 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16321,7 +21836,6 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16350,10 +21864,7 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16414,9 +21925,15 @@ drtpsss.o: drtpsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpvis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtrbss.o: drtrbss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrbss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16427,6 +21944,10 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16441,7 +21962,6 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16470,10 +21990,7 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16535,8 +22052,8 @@ drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h \
+drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16547,6 +22064,10 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16561,7 +22082,6 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16590,10 +22110,7 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16654,13 +22171,9 @@ drtqds.o: drtqds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16671,6 +22184,10 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16685,7 +22202,6 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16714,10 +22230,7 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16777,20 +22290,10 @@ drtras.o: drtras.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrof.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16801,6 +22304,10 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16815,7 +22322,6 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16844,10 +22350,7 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -16909,8 +22412,8 @@ drtrbas2.o: drtrbas2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
+drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -16921,6 +22424,10 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -16935,7 +22442,6 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -16964,10 +22470,7 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17028,9 +22531,11 @@ drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbls.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtsppcs.h
+drtrdais.o: drtrdais.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdais.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17041,6 +22546,10 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17055,7 +22564,6 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17084,10 +22592,7 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17148,9 +22653,11 @@ drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbos1.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h
+drtrdcks.o: drtrdcks.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17161,6 +22668,10 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17175,7 +22686,6 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17204,10 +22714,7 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17268,9 +22775,13 @@ drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbos6.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtrdps.o: drtrdps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17281,6 +22792,10 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17295,7 +22810,6 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17324,10 +22838,7 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17389,8 +22900,8 @@ drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbos7.h \
+drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17401,6 +22912,10 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17415,7 +22930,6 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17444,10 +22958,7 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17508,9 +23019,10 @@ drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h
+drtrdrs2.o: drtrdrs2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17521,6 +23033,10 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17535,7 +23051,6 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17564,10 +23079,7 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17628,10 +23140,9 @@ drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h
-drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbs4.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrdrs3.o: drtrdrs3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17642,6 +23153,10 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17656,7 +23171,6 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17685,10 +23199,7 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17750,8 +23261,8 @@ drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrbs8.h \
+drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17762,6 +23273,10 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17776,7 +23291,6 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17805,10 +23319,7 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17870,8 +23381,8 @@ drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
+drtrdsis.o: drtrdsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -17882,6 +23393,10 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -17896,7 +23411,6 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -17925,10 +23439,7 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -17990,8 +23501,8 @@ drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcos.h \
+drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrecs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18002,6 +23513,10 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18016,7 +23531,6 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18045,10 +23559,7 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18110,8 +23621,8 @@ drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
+drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrfgs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18122,6 +23633,10 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18136,7 +23651,6 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18165,10 +23679,7 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18229,9 +23740,12 @@ drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas1.h
+drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18242,6 +23756,10 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18256,7 +23774,6 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18285,10 +23802,7 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18350,9 +23864,10 @@ drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
+drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18363,6 +23878,10 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18377,7 +23896,6 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18406,10 +23924,7 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18470,9 +23985,11 @@ drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h
+drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18483,6 +24000,10 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18497,7 +24018,6 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18526,10 +24046,7 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18591,9 +24108,10 @@ drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h
-drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtris.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18604,6 +24122,10 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18618,7 +24140,6 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18647,10 +24168,7 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18711,9 +24229,11 @@ drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrlsds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18724,6 +24244,10 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18738,7 +24262,6 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18767,10 +24290,7 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18832,8 +24352,8 @@ drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrds.h \
+drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18844,6 +24364,10 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18858,7 +24382,6 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -18887,10 +24410,7 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -18952,8 +24472,8 @@ drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrecs.h \
+drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -18964,6 +24484,10 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -18978,7 +24502,6 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19007,10 +24530,7 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19072,8 +24592,8 @@ drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrfgs.h \
+drtrmss1.o: drtrmss1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19084,6 +24604,10 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19098,7 +24622,6 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19127,10 +24650,7 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19191,12 +24711,9 @@ drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h
-drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrmss2.o: drtrmss2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19207,6 +24724,10 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19221,7 +24742,6 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19250,10 +24770,7 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19314,11 +24831,9 @@ drtrfors.o: drtrfors.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19329,6 +24844,10 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19343,7 +24862,6 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19372,10 +24890,7 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19437,10 +24952,9 @@ drtrics.o: drtrics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtsptcs.h
-drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19451,6 +24965,10 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19465,7 +24983,6 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19494,10 +25011,7 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19559,10 +25073,11 @@ drtrims.o: drtrims.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h
+drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19573,6 +25088,10 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19587,7 +25106,6 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19616,10 +25134,7 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19681,10 +25196,9 @@ drtris.o: drtris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrlsds.h \
+drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19695,6 +25209,10 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19709,7 +25227,6 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19738,10 +25255,7 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19802,9 +25316,14 @@ drtrlsds.o: drtrlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h
+drtrpprs.o: drtrpprs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19815,6 +25334,10 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19829,7 +25352,6 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19858,10 +25380,7 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -19923,8 +25442,8 @@ drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrms.h \
+drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -19935,6 +25454,10 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -19949,7 +25472,6 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -19978,10 +25500,7 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20042,9 +25561,10 @@ drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrmss6.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrecs.h
+drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20055,6 +25575,10 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20069,7 +25593,6 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20098,10 +25621,7 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20163,8 +25683,8 @@ drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
+drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20175,6 +25695,10 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20189,7 +25713,6 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20218,10 +25741,7 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20283,8 +25803,8 @@ drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrris1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20295,6 +25815,10 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20309,7 +25833,6 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20338,10 +25861,7 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20402,10 +25922,9 @@ drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrris2.o: drtrris2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrris2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20416,6 +25935,10 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20430,7 +25953,6 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20459,10 +25981,7 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20523,11 +26042,9 @@ drtrpis.o: drtrpis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h
-drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrris3.o: drtrris3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrris3.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20538,6 +26055,10 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20552,7 +26073,6 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20581,10 +26101,7 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20645,10 +26162,9 @@ drtrppcs.o: drtrppcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20659,6 +26175,10 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20673,7 +26193,6 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20702,10 +26221,7 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20766,14 +26282,9 @@ drtrpphs.o: drtrpphs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h
-drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrpps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20784,6 +26295,10 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20798,7 +26313,6 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20827,10 +26341,7 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -20892,9 +26403,20 @@ drtrpps.o: drtrpps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrecs.h
-drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
+ ../include/dcmtk/dcmrt/seq/drtrpps.h \
+ ../include/dcmtk/dcmrt/seq/drtrecs.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrros.h \
+ ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrtcs.h
+drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -20905,6 +26427,10 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -20919,7 +26445,6 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -20948,10 +26473,7 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21012,9 +26534,10 @@ drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21025,6 +26548,10 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21039,7 +26566,6 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21068,10 +26594,7 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21133,8 +26656,8 @@ drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrris1.h \
+drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21145,6 +26668,10 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21159,7 +26686,6 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21188,10 +26714,7 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21253,8 +26776,8 @@ drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrris6.h \
+drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrrshs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21265,6 +26788,10 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21279,7 +26806,6 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21308,10 +26834,7 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21373,8 +26896,8 @@ drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h \
+drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21385,6 +26908,10 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21399,7 +26926,6 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21428,10 +26954,7 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21492,9 +27015,10 @@ drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrms.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21505,6 +27029,10 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21519,7 +27047,6 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21548,10 +27075,7 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21612,9 +27136,12 @@ drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrros.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21625,6 +27152,10 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21639,7 +27170,6 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21668,10 +27198,7 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21733,15 +27260,9 @@ drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrpps.h \
- ../include/dcmtk/dcmrt/seq/drtrecs.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtsptcs.h \
- ../include/dcmtk/dcmrt/seq/drtrrs.h \
- ../include/dcmtk/dcmrt/seq/drtrrros.h \
- ../include/dcmtk/dcmrt/seq/drtspccs.h
-drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcis.h
+drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21752,6 +27273,10 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21766,7 +27291,6 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21795,10 +27319,7 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21859,10 +27380,9 @@ drtrrpcs.o: drtrrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrros.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrshs1.o: drtrshs1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21873,6 +27393,10 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -21887,7 +27411,6 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -21916,10 +27439,7 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -21981,8 +27501,8 @@ drtrrros.o: drtrrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrs.h \
+drtrshs2.o: drtrshs2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -21993,6 +27513,10 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22007,7 +27531,6 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22036,10 +27559,7 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22101,8 +27621,8 @@ drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrshs.h \
+drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22113,6 +27633,10 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22127,7 +27651,6 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22156,10 +27679,7 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22221,8 +27741,8 @@ drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
+drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsns.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22233,6 +27753,10 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22247,7 +27771,6 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22276,10 +27799,7 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22340,13 +27860,9 @@ drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h
-drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22357,6 +27873,10 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22371,7 +27891,6 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22400,10 +27919,7 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22465,8 +27981,8 @@ drtrrtps3.o: drtrrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
+drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22477,6 +27993,10 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22491,7 +28011,6 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22520,10 +28039,7 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22585,8 +28101,8 @@ drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22597,6 +28113,10 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22611,7 +28131,6 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22640,10 +28159,7 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22705,8 +28221,8 @@ drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
+drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22717,6 +28233,10 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22731,7 +28251,6 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22760,10 +28279,7 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22824,10 +28340,9 @@ drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22838,6 +28353,10 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22852,7 +28371,6 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -22881,10 +28399,7 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -22946,11 +28461,9 @@ drtrsers.o: drtrsers.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
+drtrtps1.o: drtrtps1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -22961,6 +28474,10 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22975,7 +28492,6 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23004,10 +28520,7 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23069,9 +28582,12 @@ drtrses.o: drtrses.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrfgs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas1.h
+drtrtps2.o: drtrtps2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23082,6 +28598,10 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23096,7 +28616,6 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23125,10 +28644,7 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23190,8 +28706,8 @@ drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrshs6.h \
+drtrtps3.o: drtrtps3.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps3.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23202,6 +28718,10 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23216,7 +28736,6 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23245,10 +28764,7 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23310,8 +28826,8 @@ drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h \
+drtrtps4.o: drtrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps4.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23322,6 +28838,10 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23336,7 +28856,6 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23365,10 +28884,7 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23430,8 +28946,8 @@ drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsis.h \
+drtrtrs1.o: drtrtrs1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23442,6 +28958,10 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23456,7 +28976,6 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23485,10 +29004,7 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23549,9 +29065,11 @@ drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsns.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
+ ../include/dcmtk/dcmrt/seq/drtrcps.h
+drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23562,6 +29080,10 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23576,7 +29098,6 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23605,10 +29126,7 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23670,8 +29188,8 @@ drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
+drtrvcs.o: drtrvcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23682,6 +29200,10 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23696,7 +29218,6 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23725,10 +29246,7 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23789,9 +29307,10 @@ drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrvis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23802,6 +29321,10 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23816,7 +29339,6 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23845,10 +29367,7 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -23910,8 +29429,8 @@ drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h \
+drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrws.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -23922,6 +29441,10 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -23936,7 +29459,6 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -23965,10 +29487,7 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24030,8 +29549,8 @@ drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h \
+drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24042,6 +29561,10 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24056,7 +29579,6 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24085,10 +29607,7 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24149,9 +29668,14 @@ drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtqds.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24162,6 +29686,10 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24176,7 +29704,6 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24205,10 +29732,7 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24270,9 +29794,12 @@ drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
-drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24283,6 +29810,10 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24297,7 +29828,6 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24326,10 +29856,7 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24391,10 +29918,9 @@ drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
- ../include/dcmtk/dcmrt/seq/drtrcps.h
-drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtscvs.o: drtscvs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24405,6 +29931,10 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24419,7 +29949,6 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24448,10 +29977,7 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24512,9 +30038,11 @@ drtrtrs4.o: drtrtrs4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrvis.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h
+drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24525,6 +30053,10 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24539,7 +30071,6 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24568,10 +30099,7 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24632,9 +30160,10 @@ drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrws.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24645,6 +30174,10 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24659,7 +30192,6 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24688,10 +30220,7 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24753,8 +30282,8 @@ drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtrwvms.h \
+drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtshds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24765,6 +30294,10 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24779,7 +30312,6 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24808,10 +30340,7 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24872,13 +30401,9 @@ drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtqds.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -24889,6 +30414,10 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -24903,7 +30432,6 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -24932,10 +30460,7 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -24997,12 +30522,10 @@ drtscris.o: drtscris.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtscs.h \
+drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25013,6 +30536,10 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25027,7 +30554,6 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25056,10 +30582,7 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25121,9 +30644,10 @@ drtscs.o: drtscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h \
+drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsns.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25134,6 +30658,10 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25148,7 +30676,6 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25177,10 +30704,7 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25241,10 +30765,9 @@ drtsdcs.o: drtsdcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtspccs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25255,6 +30778,10 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25269,7 +30796,6 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25298,10 +30824,7 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25362,9 +30885,10 @@ drtsds.o: drtsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtshds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25375,6 +30899,10 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25389,7 +30917,6 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25418,10 +30945,7 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25482,9 +31006,14 @@ drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h
+drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25495,6 +31024,10 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25509,7 +31042,6 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25538,10 +31070,7 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25603,10 +31132,12 @@ drtsins.o: drtsins.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
+ ../include/dcmtk/dcmrt/seq/drtajcs.h
+drtsppcs.o: drtsppcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsppcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25617,6 +31148,10 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25631,7 +31166,6 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25660,10 +31194,7 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25724,11 +31255,9 @@ drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsns.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25739,6 +31268,10 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25753,7 +31286,6 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25782,10 +31314,7 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25846,9 +31375,10 @@ drtsns.o: drtsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25859,6 +31389,10 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25873,7 +31407,6 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -25902,10 +31435,7 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -25966,10 +31496,9 @@ drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -25980,6 +31509,10 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -25994,7 +31527,6 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26023,10 +31555,7 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26088,13 +31617,9 @@ drtspcs.o: drtspcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpcxs.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h
-drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -26105,6 +31630,10 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -26119,7 +31648,6 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26148,10 +31676,7 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26213,12 +31738,21 @@ drtspgis.o: drtspgis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtafs.h \
- ../include/dcmtk/dcmrt/seq/drtajcs.h
-drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h ../include/dcmtk/dcmrt/seq/drtdcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdais.h
+drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -26229,6 +31763,10 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -26243,7 +31781,6 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26272,10 +31809,7 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26337,19 +31871,22 @@ drtsptcs.o: drtsptcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtecs.h
-drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtss.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
+drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drtstrct.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -26364,7 +31901,6 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26387,16 +31923,14 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26457,9 +31991,114 @@ drtss.o: drtss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrs.h \
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcsis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h \
+ ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtcsas.h \
+ ../include/dcmtk/dcmrt/seq/drtdimcs.h \
+ ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
+ ../include/dcmtk/dcmrt/seq/drtdspcs.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtgms.h \
+ ../include/dcmtk/dcmrt/seq/drtgmcs.h \
+ ../include/dcmtk/dcmrt/seq/drtgpis.h \
+ ../include/dcmtk/dcmrt/seq/drtipiqs.h \
+ ../include/dcmtk/dcmrt/seq/drtaadcs.h \
+ ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
+ ../include/dcmtk/dcmrt/seq/drthsdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtians.h \
+ ../include/dcmtk/dcmrt/seq/drtiais.h \
+ ../include/dcmtk/dcmrt/seq/drtiseis.h \
+ ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtpbcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpsics.h \
+ ../include/dcmtk/dcmrt/seq/drtpscs.h \
+ ../include/dcmtk/dcmrt/seq/drtppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtcims.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtporis.h \
+ ../include/dcmtk/dcmrt/seq/drtprsis.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtpdecs.h \
+ ../include/dcmtk/dcmrt/seq/drtdias.h \
+ ../include/dcmtk/dcmrt/seq/drtpdeds.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtsppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrros.h ../include/dcmtk/dcmrt/seq/drtars.h \
+ ../include/dcmtk/dcmrt/seq/drtarms.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
+ ../include/dcmtk/dcmrt/seq/drtrpps.h \
+ ../include/dcmtk/dcmrt/seq/drtrecs.h \
+ ../include/dcmtk/dcmrt/seq/drtrics.h \
+ ../include/dcmtk/dcmrt/seq/drtsptcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrrros.h \
+ ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
+ ../include/dcmtk/dcmrt/seq/drtrfors.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrpphs.h \
+ ../include/dcmtk/dcmrt/seq/drtdimrs.h \
+ ../include/dcmtk/dcmrt/seq/drtdirs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
+ ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrps.h \
+ ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsers.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
+ ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrpcs.h \
+ ../include/dcmtk/dcmrt/seq/drtspcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrscs.h \
+ ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
+ ../include/dcmtk/dcmrt/seq/drtsins.h \
+ ../include/dcmtk/dcmrt/seq/drtspgis.h \
+ ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdais.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h
+drttms1.o: drttms1.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttms1.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -26470,6 +32109,10 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -26484,7 +32127,6 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26513,10 +32155,7 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26578,9 +32217,9 @@ drtssrcs.o: drtssrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drttms2.o: drttms2.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttms2.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -26591,6 +32230,10 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -26605,7 +32248,6 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26634,10 +32276,7 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26699,9 +32338,9 @@ drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
-drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtsss.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drttrccs.o: drttrccs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttrccs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -26712,6 +32351,10 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -26726,7 +32369,6 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26755,10 +32397,7 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26820,10 +32459,9 @@ drtsss.o: drtsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h
-drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drtstrct.h ../include/dcmtk/dcmrt/drttypes.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/drttreat.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
@@ -26832,6 +32470,10 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -26846,7 +32488,6 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -26876,10 +32517,7 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -26944,19 +32582,23 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtgms.h \
+ ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \
+ ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \
  ../include/dcmtk/dcmrt/seq/drtgmcs.h \
  ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
@@ -26968,6 +32610,7 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
  ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
  ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
@@ -26980,24 +32623,13 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
  ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrros.h \
- ../include/dcmtk/dcmrt/seq/drtrpps.h \
- ../include/dcmtk/dcmrt/seq/drtrecs.h \
- ../include/dcmtk/dcmrt/seq/drtrics.h \
- ../include/dcmtk/dcmrt/seq/drtsptcs.h \
- ../include/dcmtk/dcmrt/seq/drtrrs.h \
- ../include/dcmtk/dcmrt/seq/drtrrros.h \
- ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
@@ -27006,9 +32638,12 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps3.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
- ../include/dcmtk/dcmrt/seq/drtras.h \
+ ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtspcs.h \
@@ -27018,11 +32653,11 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspgis.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
-drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drttms0.h \
+ ../include/dcmtk/dcmrt/seq/drttscds.h \
+ ../include/dcmtk/dcmrt/seq/drttsmds.h
+drttrtcs.o: drttrtcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttrtcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -27033,6 +32668,10 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27047,7 +32686,6 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -27076,10 +32714,7 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -27140,9 +32775,10 @@ drttms0.o: drttms0.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttscds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -27153,6 +32789,10 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27167,7 +32807,6 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -27196,10 +32835,7 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -27261,16 +32897,22 @@ drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/drttreat.h ../include/dcmtk/dcmrt/drttypes.h \
+drttscs.o: drttscs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofcast.h \
  ../../ofstd/include/dcmtk/ofstd/ofexport.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27285,7 +32927,6 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -27308,17 +32949,13 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -27380,79 +33017,9 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
- ../include/dcmtk/dcmrt/seq/drtbrs.h \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.h \
- ../include/dcmtk/dcmrt/seq/drtcsrs.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
- ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.h \
- ../include/dcmtk/dcmrt/seq/drtcsas.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../include/dcmtk/dcmrt/seq/drteas.h ../include/dcmtk/dcmrt/seq/drtfgss.h \
- ../include/dcmtk/dcmrt/seq/drtfsss.h ../include/dcmtk/dcmrt/seq/drtgms.h \
- ../include/dcmtk/dcmrt/seq/drtgmcs.h \
- ../include/dcmtk/dcmrt/seq/drtgpis.h \
- ../include/dcmtk/dcmrt/seq/drtipiqs.h \
- ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.h \
- ../include/dcmtk/dcmrt/seq/drthsdrs.h \
- ../include/dcmtk/dcmrt/seq/drtians.h \
- ../include/dcmtk/dcmrt/seq/drtiais.h \
- ../include/dcmtk/dcmrt/seq/drtiseis.h \
- ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
- ../include/dcmtk/dcmrt/seq/drtopis.h \
- ../include/dcmtk/dcmrt/seq/drtpbcs.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.h \
- ../include/dcmtk/dcmrt/seq/drtpscs.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
- ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
- ../include/dcmtk/dcmrt/seq/drtporis.h \
- ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpdecs.h \
- ../include/dcmtk/dcmrt/seq/drtdias.h \
- ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtrpphs.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtwrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
- ../include/dcmtk/dcmrt/seq/drtrps.h \
- ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
- ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
- ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
- ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtspcs.h \
- ../include/dcmtk/dcmrt/seq/drtrscs.h \
- ../include/dcmtk/dcmrt/seq/drtsdcs.h ../include/dcmtk/dcmrt/seq/drtsis.h \
- ../include/dcmtk/dcmrt/seq/drtsins.h \
- ../include/dcmtk/dcmrt/seq/drtspgis.h \
- ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
- ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drttscds.h \
- ../include/dcmtk/dcmrt/seq/drttsmds.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
-drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drttscds.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttsibs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -27463,6 +33030,10 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27477,7 +33048,6 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -27506,10 +33076,7 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -27570,9 +33137,36 @@ drttscds.o: drttscds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
-drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drttsibs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtas4.h \
+ ../include/dcmtk/dcmrt/seq/drtbldls.h \
+ ../include/dcmtk/dcmrt/seq/drtdddps.h \
+ ../include/dcmtk/dcmrt/seq/drtgas6.h \
+ ../include/dcmtk/dcmrt/seq/drticpds.h \
+ ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drtcpas.h \
+ ../include/dcmtk/dcmrt/seq/drtiwps.h \
+ ../include/dcmtk/dcmrt/seq/drtlsds2.h ../include/dcmtk/dcmrt/seq/drtos.h \
+ ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpics.h \
+ ../include/dcmtk/dcmrt/seq/drtrmss2.h \
+ ../include/dcmtk/dcmrt/seq/drtrshs2.h \
+ ../include/dcmtk/dcmrt/seq/drtmttcs.h \
+ ../include/dcmtk/dcmrt/seq/drtttrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrbls.h \
+ ../include/dcmtk/dcmrt/seq/drtrbss.h \
+ ../include/dcmtk/dcmrt/seq/drtrcos.h \
+ ../include/dcmtk/dcmrt/seq/drtrlsds.h \
+ ../include/dcmtk/dcmrt/seq/drtrrms.h \
+ ../include/dcmtk/dcmrt/seq/drtrrshs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \
+ ../include/dcmtk/dcmrt/seq/drtrbos3.h \
+ ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvis.h
+drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drttsmds.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -27583,6 +33177,10 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27597,7 +33195,6 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -27626,10 +33223,7 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -27690,32 +33284,9 @@ drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtas7.h \
- ../include/dcmtk/dcmrt/seq/drtbldls.h \
- ../include/dcmtk/dcmrt/seq/drtdddps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h \
- ../include/dcmtk/dcmrt/seq/drticpds.h \
- ../include/dcmtk/dcmrt/seq/drtbldps.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.h \
- ../include/dcmtk/dcmrt/seq/drtiwps.h \
- ../include/dcmtk/dcmrt/seq/drtlsds7.h ../include/dcmtk/dcmrt/seq/drtos.h \
- ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.h \
- ../include/dcmtk/dcmrt/seq/drtecs.h ../include/dcmtk/dcmrt/seq/drtpics.h \
- ../include/dcmtk/dcmrt/seq/drtrmss7.h \
- ../include/dcmtk/dcmrt/seq/drtrshs7.h \
- ../include/dcmtk/dcmrt/seq/drtrbls.h \
- ../include/dcmtk/dcmrt/seq/drtrcos.h \
- ../include/dcmtk/dcmrt/seq/drtrlsds.h \
- ../include/dcmtk/dcmrt/seq/drtrrms.h \
- ../include/dcmtk/dcmrt/seq/drtrrshs.h \
- ../include/dcmtk/dcmrt/seq/drtrsns.h ../include/dcmtk/dcmrt/seq/drtrws.h \
- ../include/dcmtk/dcmrt/seq/drtrbos7.h \
- ../include/dcmtk/dcmrt/seq/drtrcdrs.h \
- ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
- ../include/dcmtk/dcmrt/seq/drtrvis.h
-drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drttsmds.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtttrcs.o: drtttrcs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtttrcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -27726,6 +33297,10 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27740,7 +33315,6 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -27769,10 +33343,7 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -27833,7 +33404,8 @@ drttsmds.o: drttsmds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrod.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttts.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -27846,6 +33418,10 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27860,7 +33436,6 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -27889,10 +33464,7 @@ drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -27965,6 +33537,10 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -27979,7 +33555,6 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28009,10 +33584,7 @@ drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -28086,6 +33658,10 @@ drtudis.o: drtudis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -28100,7 +33676,6 @@ drtudis.o: drtudis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28129,10 +33704,7 @@ drtudis.o: drtudis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -28206,6 +33778,10 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -28220,7 +33796,6 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28249,10 +33824,7 @@ drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -28326,6 +33898,10 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -28340,7 +33916,6 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28369,10 +33944,7 @@ drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -28446,6 +34018,10 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -28460,7 +34036,6 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28489,10 +34064,7 @@ drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -28566,6 +34138,10 @@ drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -28580,7 +34156,6 @@ drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28609,10 +34184,7 @@ drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -28686,6 +34258,10 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -28700,7 +34276,6 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28729,10 +34304,7 @@ drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -28806,6 +34378,10 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -28820,7 +34396,6 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -28849,10 +34424,7 @@ drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
index a8a1f444a1eb691f1df177c35c4150a7f7fd2159..419f61a1397b02962412f26b193690ba0f94253a 100644 (file)
@@ -21,40 +21,48 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
        -I$(dcmimgledir)/include
 LOCALDEFS =
 
-objs = drtdose.o drtimage.o drtplan.o drtstrct.o drttreat.o drtionpl.o drtiontr.o \
-       drmdose.o drmimage.o drmplan.o drmstrct.o drttypes.o \
-       drtaadcs.o drtadcs.o drtads.o drtafs.o drtags.o drtajcs.o drtas1.o \
-       drtas5.o drtas6.o drtas7.o drtass.o drtbads.o drtbas.o drtbcps.o \
-       drtbl2.o drtbl5.o drtbldls.o drtbldps.o drtblds1.o drtblds5.o drtblds6.o \
-       drtbldts.o drtbrcss.o drtbrdrs.o drtbrs.o drtbs.o drtbss.o drtbvcps.o \
-       drtcbars.o drtccs.o drtcctus.o drtcdrs.o drtces.o drtcgis.o drtchs.o \
-       drtcims.o drtcis.o drtcncs.o drtcos.o drtcpas.o drtcpis.o drtcps.o \
-       drtcsas.o drtcs.o drtcshs.o drtcsis.o drtcsrs.o drtcss.o drtdcs.o \
-       drtdddps.o drtddps.o drtdias.o drtdimcs.o drtdimrs.o drtdirs.o drtdrs.o \
-       drtds.o drtdspcs.o drtdss.o drtdvhs.o drtdvrrs.o drteas.o drtecs.o \
-       drtes.o drtfds.o drtfes.o drtfgs.o drtfgss.o drtfms.o drtfsss.o drtgas.o \
-       drtgmcs.o drtgms.o drtgpis.o drthsdrs.o drtiais.o drtians.o drtiblds.o \
-       drtibls.o drtibs.o drticpds.o drticps.o drtics.o drtiis.o drtipiqs.o \
-       drtircs.o drtiseis.o drtitts.o drtiwps.o drtiws.o drtlsds6.o drtlsds7.o \
-       drtlsds.o drtmacds.o drtmas.o drtmdrs.o drtmls.o drtmps.o drtmris.o \
-       drtmss.o drtmucs.o drtoas.o drtois.o drtopis.o drtos.o drtpbcs.o drtpcs.o \
-       drtpcxs.o drtpdecs.o drtpdeds.o drtpfms.o drtpics.o drtporcs.o drtporis.o \
-       drtppcs.o drtprsis.o drtpscs.o drtpsics.o drtpss.o drtpsss.o drtpvis.o \
-       drtqds.o drtras.o drtrbas2.o drtrbas8.o drtrbls.o drtrbos1.o drtrbos6.o \
-       drtrbos7.o drtrbs2.o drtrbs4.o drtrbs8.o drtrcdrs.o drtrcos.o drtrcps.o \
-       drtrcs.o drtrdros.o drtrdrs1.o drtrdrs6.o drtrdrs8.o drtrds.o drtrecs.o \
-       drtrfgs.o drtrfors.o drtrics.o drtrims.o drtris.o drtrlsds.o drtrmdrs.o \
-       drtrms.o drtrmss6.o drtrmss7.o drtrpcs.o drtrpis.o drtrppcs.o drtrpphs.o \
-       drtrpps.o drtrppss.o drtrps.o drtrris1.o drtrris6.o drtrris9.o drtrrms.o \
-       drtrros.o drtrrpcs.o drtrrros.o drtrrs.o drtrrshs.o drtrrtps3.o \
-       drtrrtps4.o drtrrtps5.o drtrrtps.o drtrscs.o drtrsers.o drtrses.o \
-       drtrshs6.o drtrshs7.o drtrshs.o drtrsis.o drtrsns.o drtrsos.o drtrsrs.o \
-       drtrss.o drtrsss.o drtrsts.o drtrtrs2.o drtrtrs4.o drtrvis.o drtrws.o \
-       drtrwvms.o drtscris.o drtscs.o drtsdcs.o drtsds.o drtshds.o drtsins.o \
-       drtsis.o drtsns.o drtspccs.o drtspcs.o drtspgis.o drtsptcs.o drtss.o \
-       drtssrcs.o drtssrs.o drtsss.o drttms0.o drttms9.o drttscds.o drttsibs.o \
-       drttsmds.o drttts.o drtudis.o drtvls.o drtwps.o drtwrs.o drtwrsrs.o \
-       drtws.o drtxrs.o
+objs = drtdose.o drtimage.o drtplan.o drtstrct.o drttreat.o drtionpl.o \
+       drtiontr.o drmdose.o drmimage.o drmplan.o drmstrct.o drttypes.o \
+       drtaadcs.o drtadcs.o drtads.o drtafcs.o drtafs.o drtags.o drtajcs.o \
+       drtancs.o drtarms.o drtars.o drtas1.o drtas2.o drtas3.o drtas4.o \
+       drtass.o drtbads.o drtbas.o drtbcps.o drtbl1.o drtbl2.o drtbldls.o \
+       drtbldps.o drtblds1.o drtblds2.o drtbldts.o drtbrcss.o drtbrdrs.o \
+       drtbrs.o drtbs.o drtbss.o drtbvcps.o drtcbars.o drtccs.o drtcctus.o \
+       drtcdrs.o drtces.o drtcgis.o drtchs.o drtcims.o drtcis.o drtcncs.o \
+       drtcos.o drtcpas.o drtcpis.o drtcps.o drtcsas.o drtcs.o drtcshs.o \
+       drtcsis.o drtcsrs.o drtcss.o drtcttcs.o drtcvcss.o drtcvdas.o \
+       drtcvis.o drtdccs.o drtdcs.o drtdcvs.o drtdddps.o drtddps.o drtdfss.o \
+       drtdias.o drtdimcs.o drtdimrs.o drtdirs.o drtdrs.o drtds.o drtdspcs.o \
+       drtdss.o drtdtcs.o drtdvhs.o drtdvrrs.o drteas.o drteblds.o drteblos.o \
+       drtecs.o drtecvis.o drtecvs.o drtes.o drtfbdds.o drtfds.o drtfes.o \
+       drtfgs.o drtfgss.o drtfms.o drtfsss.o drtgas1.o drtgas2.o drtgas3.o \
+       drtgas4.o drtgas5.o drtgas6.o drtgmcs.o drtgms.o drtgpis.o drthsdrs.o \
+       drtiais.o drtians.o drtiblds.o drtibls.o drtibs.o drticpds.o drticps.o \
+       drtics.o drtidcs.o drtiis.o drtipiqs.o drtircs.o drtiseis.o drtitts.o \
+       drtiwps.o drtiws.o drtlsds1.o drtlsds2.o drtlsds.o drtmacds.o drtmas.o \
+       drtmdrs.o drtmls.o drtmps.o drtmris.o drtmss.o drtmttcs.o drtmucs.o \
+       drtnmas.o drtoas.o drtois.o drtopis.o drtos.o drtosirs.o drtpasms.o \
+       drtpass.o drtpbcs.o drtpbdds.o drtpbdos.o drtpcs.o drtpcxs.o \
+       drtpdecs.o drtpdeds.o drtpfms.o drtpics.o drtplos.o drtporcs.o \
+       drtporis.o drtppcs.o drtpros.o drtprsis.o drtpscs.o drtpsics.o \
+       drtpss.o drtpsss.o drtpvis.o drtqds.o drtras.o drtrbas1.o drtrbas2.o \
+       drtrbdgs.o drtrbls.o drtrbos1.o drtrbos2.o drtrbos3.o drtrbs1.o \
+       drtrbs2.o drtrbs3.o drtrbss.o drtrcdrs.o drtrcos.o drtrcps.o drtrcs.o \
+       drtrdais.o drtrdcks.o drtrdps.o drtrdrs1.o drtrdrs2.o drtrdrs3.o \
+       drtrds.o drtrdsis.o drtrecs.o drtrfgs.o drtrfors.o drtrics.o drtrims.o \
+       drtris.o drtrlsds.o drtrmdrs.o drtrms.o drtrmss1.o drtrmss2.o \
+       drtrpcs.o drtrpis.o drtrppcs.o drtrpphs.o drtrpprs.o drtrpps.o \
+       drtrppss.o drtrps.o drtrris1.o drtrris2.o drtrris3.o drtrrms.o \
+       drtrros.o drtrrpcs.o drtrrros.o drtrrs.o drtrrshs.o drtrscs.o \
+       drtrsers.o drtrses.o drtrshs1.o drtrshs2.o drtrshs.o drtrsis.o \
+       drtrsns.o drtrsos.o drtrsrs.o drtrss.o drtrsss.o drtrsts.o drtrtps1.o \
+       drtrtps2.o drtrtps3.o drtrtps4.o drtrtrs1.o drtrtrs2.o  drtrvcs.o \
+       drtrvis.o drtrws.o drtrwvms.o drtscris.o drtscs.o drtscvs.o drtsdcs.o \
+       drtsds.o drtshds.o drtsins.o drtsis.o drtsns.o drtspccs.o drtspcs.o \
+       drtspgis.o drtsppcs.o drtsptcs.o drtss.o drtssrcs.o drtssrs.o drtsss.o \
+       drttms1.o drttms2.o drttrccs.o drttrtcs.o drttscds.o drttscs.o \
+       drttsibs.o drttsmds.o drtttrcs.o drttts.o drtudis.o drtvls.o drtwps.o \
+       drtwrs.o drtwrsrs.o drtws.o drtxrs.o
 
 library = libdcmrt.$(LIBEXT)
 
index 4a2f733f72a32f66c9fec5a35a3a316f5150eb87..2acb8efbdeaf889ee084a11d5f1d556236ba2092 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2017, OFFIS e.V.
+ *  Copyright (C) 2012-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -63,9 +63,8 @@ OFCondition DRTImage::loadFile(const OFFilename &filename,
         cond = DRTImageIOD::read(*format_.getDataset());
         if (cond.good())
         {
-            image_ = new DicomImage(&format_,
-                    format_.getDataset()->getOriginalXfer(),
-                    CIF_MayDetachPixelData);
+            image_ = new DicomImage(&format_, format_.getDataset()->getOriginalXfer(),
+                                    CIF_MayDetachPixelData);
         }
     }
     if (cond.bad())
@@ -78,12 +77,14 @@ OFCondition DRTImage::read(DcmItem *dataset)
     /* get rid of the old image before we mess with its dataset */
     reset();
 
-    dataset_ = dataset;
-    OFCondition cond = DRTImageIOD::read(*format_.getDataset());
+    if (dataset == NULL)
+        return EC_IllegalCall;
+
+    OFCondition cond = DRTImageIOD::read(*dataset);
     if (cond.good())
     {
-        image_ = new DicomImage(&format_,
-                EXS_Unknown, CIF_MayDetachPixelData);
+        dataset_ = dataset;
+        image_ = new DicomImage(dataset_, EXS_Unknown, CIF_MayDetachPixelData);
     }
     else
         clear();
index 32e4644e21d96d95a75a55a37ee49108b1de4c2d..ee6350aee22269f94c74bea785a6e3e4aae13902 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoFirstItem()
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index aa9012ce5616853cf75665141a664345018629c1..9d64d9396d0efbee76eb44eadf04835a970f1912 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::gotoFirstItem()
 OFCondition DRTAdmittingDiagnosesCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 99775e6ed4b3123fef48df94650eaa6b3d6959ae..2e5c192a2babbdb75453f22bbb3754089d962bfb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTAdditionalDrugSequence::gotoFirstItem()
 OFCondition DRTAdditionalDrugSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtafcs.cc b/dcmrt/libsrc/drtafcs.cc
new file mode 100644 (file)
index 0000000..662f280
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTAlgorithmFamilyCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtafcs.h"
+
+
+// --- item class ---
+
+DRTAlgorithmFamilyCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTAlgorithmFamilyCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTAlgorithmFamilyCodeSequence::Item::~Item()
+{
+}
+
+
+DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTAlgorithmFamilyCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTAlgorithmFamilyCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTAlgorithmFamilyCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AlgorithmFamilyCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AlgorithmFamilyCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AlgorithmFamilyCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AlgorithmFamilyCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AlgorithmFamilyCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AlgorithmFamilyCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTAlgorithmFamilyCodeSequence::DRTAlgorithmFamilyCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTAlgorithmFamilyCodeSequence::DRTAlgorithmFamilyCodeSequence(const DRTAlgorithmFamilyCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTAlgorithmFamilyCodeSequence &DRTAlgorithmFamilyCodeSequence::operator=(const DRTAlgorithmFamilyCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTAlgorithmFamilyCodeSequence::~DRTAlgorithmFamilyCodeSequence()
+{
+    clear();
+}
+
+
+void DRTAlgorithmFamilyCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTAlgorithmFamilyCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTAlgorithmFamilyCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTAlgorithmFamilyCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTAlgorithmFamilyCodeSequence::Item &DRTAlgorithmFamilyCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::read(DcmItem &dataset,
+                                                 const OFString &card,
+                                                 const OFString &type,
+                                                 const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_AlgorithmFamilyCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_AlgorithmFamilyCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmFamilyCodeSequence::write(DcmItem &dataset,
+                                                  const OFString &card,
+                                                  const OFString &type,
+                                                  const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AlgorithmFamilyCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 8c6fb5d817a8d9528a9f17664eae06591d885a2d..d2fffecfda726a938a0439cd2c8e850505d90fc7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -301,10 +301,12 @@ OFCondition DRTAssigningFacilitySequence::gotoFirstItem()
 OFCondition DRTAssigningFacilitySequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index c6285b2b3a0c236f0d89e8c365fca0de527112df..342f2001ab3faa7ba2d0919290e85c04ccc918ea 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -318,10 +318,12 @@ OFCondition DRTApplicatorGeometrySequence::gotoFirstItem()
 OFCondition DRTApplicatorGeometrySequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 03feeffe8623d0a0f2fc07cb7878c6e4cf866cce..e0a9bb93c2264b04e742e645ae17fa7c7e103a54 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2021, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -16,8 +16,6 @@
 
 #include "dcmtk/dcmrt/seq/drtajcs.h"
 
-#include <cmath>
-
 
 // --- item class ---
 
@@ -658,10 +656,12 @@ OFCondition DRTAssigningJurisdictionCodeSequence::gotoFirstItem()
 OFCondition DRTAssigningJurisdictionCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtancs.cc b/dcmrt/libsrc/drtancs.cc
new file mode 100644 (file)
index 0000000..e7e15d7
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTAlgorithmNameCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtancs.h"
+
+
+// --- item class ---
+
+DRTAlgorithmNameCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTAlgorithmNameCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTAlgorithmNameCodeSequence::Item::~Item()
+{
+}
+
+
+DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTAlgorithmNameCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTAlgorithmNameCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTAlgorithmNameCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AlgorithmNameCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AlgorithmNameCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AlgorithmNameCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AlgorithmNameCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AlgorithmNameCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AlgorithmNameCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTAlgorithmNameCodeSequence::DRTAlgorithmNameCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTAlgorithmNameCodeSequence::DRTAlgorithmNameCodeSequence(const DRTAlgorithmNameCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTAlgorithmNameCodeSequence &DRTAlgorithmNameCodeSequence::operator=(const DRTAlgorithmNameCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTAlgorithmNameCodeSequence::~DRTAlgorithmNameCodeSequence()
+{
+    clear();
+}
+
+
+void DRTAlgorithmNameCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTAlgorithmNameCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTAlgorithmNameCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTAlgorithmNameCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTAlgorithmNameCodeSequence::Item &DRTAlgorithmNameCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::read(DcmItem &dataset,
+                                               const OFString &card,
+                                               const OFString &type,
+                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_AlgorithmNameCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_AlgorithmNameCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTAlgorithmNameCodeSequence::write(DcmItem &dataset,
+                                                const OFString &card,
+                                                const OFString &type,
+                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AlgorithmNameCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtarms.cc b/dcmrt/libsrc/drtarms.cc
new file mode 100644 (file)
index 0000000..04381a4
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTAnatomicRegionModifierSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtarms.h"
+
+
+// --- item class ---
+
+DRTAnatomicRegionModifierSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTAnatomicRegionModifierSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTAnatomicRegionModifierSequence::Item::~Item()
+{
+}
+
+
+DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTAnatomicRegionModifierSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTAnatomicRegionModifierSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTAnatomicRegionModifierSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AnatomicRegionModifierSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AnatomicRegionModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AnatomicRegionModifierSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AnatomicRegionModifierSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AnatomicRegionModifierSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AnatomicRegionModifierSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTAnatomicRegionModifierSequence::DRTAnatomicRegionModifierSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTAnatomicRegionModifierSequence::DRTAnatomicRegionModifierSequence(const DRTAnatomicRegionModifierSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTAnatomicRegionModifierSequence &DRTAnatomicRegionModifierSequence::operator=(const DRTAnatomicRegionModifierSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTAnatomicRegionModifierSequence::~DRTAnatomicRegionModifierSequence()
+{
+    clear();
+}
+
+
+void DRTAnatomicRegionModifierSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTAnatomicRegionModifierSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTAnatomicRegionModifierSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTAnatomicRegionModifierSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTAnatomicRegionModifierSequence::Item &DRTAnatomicRegionModifierSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::read(DcmItem &dataset,
+                                                    const OFString &card,
+                                                    const OFString &type,
+                                                    const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_AnatomicRegionModifierSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_AnatomicRegionModifierSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionModifierSequence::write(DcmItem &dataset,
+                                                     const OFString &card,
+                                                     const OFString &type,
+                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AnatomicRegionModifierSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtars.cc b/dcmrt/libsrc/drtars.cc
new file mode 100644 (file)
index 0000000..62718b2
--- /dev/null
@@ -0,0 +1,966 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTAnatomicRegionSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtars.h"
+
+
+// --- item class ---
+
+DRTAnatomicRegionSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AnatomicRegionModifierSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTAnatomicRegionSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AnatomicRegionModifierSequence(copy.AnatomicRegionModifierSequence),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTAnatomicRegionSequence::Item::~Item()
+{
+}
+
+
+DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AnatomicRegionModifierSequence = copy.AnatomicRegionModifierSequence;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTAnatomicRegionSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+        AnatomicRegionModifierSequence.clear();
+    }
+}
+
+
+OFBool DRTAnatomicRegionSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty() &&
+           AnatomicRegionModifierSequence.isEmpty();
+}
+
+
+OFBool DRTAnatomicRegionSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AnatomicRegionSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AnatomicRegionSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "AnatomicRegionSequence");
+        AnatomicRegionModifierSequence.read(item, "1-n", "3", "AnatomicRegionSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AnatomicRegionSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AnatomicRegionSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "AnatomicRegionSequence");
+        if (result.good()) result = AnatomicRegionModifierSequence.write(item, "1-n", "3", "AnatomicRegionSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTAnatomicRegionSequence::DRTAnatomicRegionSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTAnatomicRegionSequence::DRTAnatomicRegionSequence(const DRTAnatomicRegionSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTAnatomicRegionSequence &DRTAnatomicRegionSequence::operator=(const DRTAnatomicRegionSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTAnatomicRegionSequence::~DRTAnatomicRegionSequence()
+{
+    clear();
+}
+
+
+void DRTAnatomicRegionSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTAnatomicRegionSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTAnatomicRegionSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTAnatomicRegionSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTAnatomicRegionSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTAnatomicRegionSequence::Item &DRTAnatomicRegionSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTAnatomicRegionSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::read(DcmItem &dataset,
+                                            const OFString &card,
+                                            const OFString &type,
+                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_AnatomicRegionSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_AnatomicRegionSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTAnatomicRegionSequence::write(DcmItem &dataset,
+                                             const OFString &card,
+                                             const OFString &type,
+                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_AnatomicRegionSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index ff3ac9b9997e77384042d2e99977682960bb07bc..d15dbfa40cddf20d26bf6c17790187b890e13d76 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -362,10 +362,12 @@ OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoFirstItem()
 OFCondition DRTApplicatorSequenceInRTBeamsModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtas2.cc b/dcmrt/libsrc/drtas2.cc
new file mode 100644 (file)
index 0000000..c5d436a
--- /dev/null
@@ -0,0 +1,665 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTApplicatorSequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtas2.h"
+
+
+// --- item class ---
+
+DRTApplicatorSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    ApplicatorDescription(DCM_ApplicatorDescription),
+    ApplicatorGeometrySequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ApplicatorID(DCM_ApplicatorID),
+    ApplicatorType(DCM_ApplicatorType),
+    SourceToApplicatorMountingPositionDistance(DCM_SourceToApplicatorMountingPositionDistance)
+{
+}
+
+
+DRTApplicatorSequenceInRTImageModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    ApplicatorDescription(copy.ApplicatorDescription),
+    ApplicatorGeometrySequence(copy.ApplicatorGeometrySequence),
+    ApplicatorID(copy.ApplicatorID),
+    ApplicatorType(copy.ApplicatorType),
+    SourceToApplicatorMountingPositionDistance(copy.SourceToApplicatorMountingPositionDistance)
+{
+}
+
+
+DRTApplicatorSequenceInRTImageModule::Item::~Item()
+{
+}
+
+
+DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        ApplicatorDescription = copy.ApplicatorDescription;
+        ApplicatorGeometrySequence = copy.ApplicatorGeometrySequence;
+        ApplicatorID = copy.ApplicatorID;
+        ApplicatorType = copy.ApplicatorType;
+        SourceToApplicatorMountingPositionDistance = copy.SourceToApplicatorMountingPositionDistance;
+    }
+    return *this;
+}
+
+
+void DRTApplicatorSequenceInRTImageModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ApplicatorID.clear();
+        AccessoryCode.clear();
+        ApplicatorType.clear();
+        ApplicatorGeometrySequence.clear();
+        SourceToApplicatorMountingPositionDistance.clear();
+        ApplicatorDescription.clear();
+    }
+}
+
+
+OFBool DRTApplicatorSequenceInRTImageModule::Item::isEmpty()
+{
+    return ApplicatorID.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           ApplicatorType.isEmpty() &&
+           ApplicatorGeometrySequence.isEmpty() &&
+           SourceToApplicatorMountingPositionDistance.isEmpty() &&
+           ApplicatorDescription.isEmpty();
+}
+
+
+OFBool DRTApplicatorSequenceInRTImageModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence");
+        ApplicatorGeometrySequence.read(item, "1-n", "3", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, SourceToApplicatorMountingPositionDistance, "1", "3", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence");
+        if (result.good()) result = ApplicatorGeometrySequence.write(item, "1-n", "3", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToApplicatorMountingPositionDistance), "1", "3", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorDescription, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorID, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorType, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, SourceToApplicatorMountingPositionDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::Item::setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceToApplicatorMountingPositionDistance.putFloat32(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTApplicatorSequenceInRTImageModule &DRTApplicatorSequenceInRTImageModule::operator=(const DRTApplicatorSequenceInRTImageModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTApplicatorSequenceInRTImageModule::~DRTApplicatorSequenceInRTImageModule()
+{
+    clear();
+}
+
+
+void DRTApplicatorSequenceInRTImageModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTApplicatorSequenceInRTImageModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTApplicatorSequenceInRTImageModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTApplicatorSequenceInRTImageModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::read(DcmItem &dataset,
+                                                       const OFString &card,
+                                                       const OFString &type,
+                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ApplicatorSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTImageModule::write(DcmItem &dataset,
+                                                        const OFString &card,
+                                                        const OFString &type,
+                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtas3.cc b/dcmrt/libsrc/drtas3.cc
new file mode 100644 (file)
index 0000000..bc1f09d
--- /dev/null
@@ -0,0 +1,633 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTApplicatorSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtas3.h"
+
+
+// --- item class ---
+
+DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    ApplicatorDescription(DCM_ApplicatorDescription),
+    ApplicatorID(DCM_ApplicatorID),
+    ApplicatorType(DCM_ApplicatorType)
+{
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    ApplicatorDescription(copy.ApplicatorDescription),
+    ApplicatorID(copy.ApplicatorID),
+    ApplicatorType(copy.ApplicatorType)
+{
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        ApplicatorDescription = copy.ApplicatorDescription;
+        ApplicatorID = copy.ApplicatorID;
+        ApplicatorType = copy.ApplicatorType;
+    }
+    return *this;
+}
+
+
+void DRTApplicatorSequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ApplicatorID.clear();
+        AccessoryCode.clear();
+        ApplicatorType.clear();
+        ApplicatorDescription.clear();
+    }
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return ApplicatorID.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           ApplicatorType.isEmpty() &&
+           ApplicatorDescription.isEmpty();
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorDescription, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorID, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorType, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule &DRTApplicatorSequenceInRTIonBeamsModule::operator=(const DRTApplicatorSequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::~DRTApplicatorSequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTApplicatorSequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTApplicatorSequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                          const OFString &card,
+                                                          const OFString &type,
+                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ApplicatorSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                           const OFString &card,
+                                                           const OFString &type,
+                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtas4.cc b/dcmrt/libsrc/drtas4.cc
new file mode 100644 (file)
index 0000000..d564f23
--- /dev/null
@@ -0,0 +1,633 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtas4.h"
+
+
+// --- item class ---
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    ApplicatorDescription(DCM_ApplicatorDescription),
+    ApplicatorID(DCM_ApplicatorID),
+    ApplicatorType(DCM_ApplicatorType)
+{
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    ApplicatorDescription(copy.ApplicatorDescription),
+    ApplicatorID(copy.ApplicatorID),
+    ApplicatorType(copy.ApplicatorType)
+{
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
+{
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        ApplicatorDescription = copy.ApplicatorDescription;
+        ApplicatorID = copy.ApplicatorID;
+        ApplicatorType = copy.ApplicatorType;
+    }
+    return *this;
+}
+
+
+void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ApplicatorID.clear();
+        AccessoryCode.clear();
+        ApplicatorType.clear();
+        ApplicatorDescription.clear();
+    }
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
+{
+    return ApplicatorID.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           ApplicatorType.isEmpty() &&
+           ApplicatorDescription.isEmpty();
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence");
+        getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence");
+        addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorDescription, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorID, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorType, value, pos);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule()
+{
+    clear();
+}
+
+
+void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
+                                                                       const OFString &card,
+                                                                       const OFString &type,
+                                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ApplicatorSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
+                                                                        const OFString &card,
+                                                                        const OFString &type,
+                                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtas5.cc b/dcmrt/libsrc/drtas5.cc
deleted file mode 100644 (file)
index d5f33fe..0000000
+++ /dev/null
@@ -1,663 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTApplicatorSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtas5.h"
-
-
-// --- item class ---
-
-DRTApplicatorSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    ApplicatorDescription(DCM_ApplicatorDescription),
-    ApplicatorGeometrySequence(emptyDefaultItem /*emptyDefaultSequence*/),
-    ApplicatorID(DCM_ApplicatorID),
-    ApplicatorType(DCM_ApplicatorType),
-    SourceToApplicatorMountingPositionDistance(DCM_SourceToApplicatorMountingPositionDistance)
-{
-}
-
-
-DRTApplicatorSequenceInRTImageModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    ApplicatorDescription(copy.ApplicatorDescription),
-    ApplicatorGeometrySequence(copy.ApplicatorGeometrySequence),
-    ApplicatorID(copy.ApplicatorID),
-    ApplicatorType(copy.ApplicatorType),
-    SourceToApplicatorMountingPositionDistance(copy.SourceToApplicatorMountingPositionDistance)
-{
-}
-
-
-DRTApplicatorSequenceInRTImageModule::Item::~Item()
-{
-}
-
-
-DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        ApplicatorDescription = copy.ApplicatorDescription;
-        ApplicatorGeometrySequence = copy.ApplicatorGeometrySequence;
-        ApplicatorID = copy.ApplicatorID;
-        ApplicatorType = copy.ApplicatorType;
-        SourceToApplicatorMountingPositionDistance = copy.SourceToApplicatorMountingPositionDistance;
-    }
-    return *this;
-}
-
-
-void DRTApplicatorSequenceInRTImageModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ApplicatorID.clear();
-        AccessoryCode.clear();
-        ApplicatorType.clear();
-        ApplicatorGeometrySequence.clear();
-        SourceToApplicatorMountingPositionDistance.clear();
-        ApplicatorDescription.clear();
-    }
-}
-
-
-OFBool DRTApplicatorSequenceInRTImageModule::Item::isEmpty()
-{
-    return ApplicatorID.isEmpty() &&
-           AccessoryCode.isEmpty() &&
-           ApplicatorType.isEmpty() &&
-           ApplicatorGeometrySequence.isEmpty() &&
-           SourceToApplicatorMountingPositionDistance.isEmpty() &&
-           ApplicatorDescription.isEmpty();
-}
-
-
-OFBool DRTApplicatorSequenceInRTImageModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence");
-        ApplicatorGeometrySequence.read(item, "1-n", "3", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, SourceToApplicatorMountingPositionDistance, "1", "3", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence");
-        if (result.good()) result = ApplicatorGeometrySequence.write(item, "1-n", "3", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToApplicatorMountingPositionDistance), "1", "3", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AccessoryCode, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorDescription, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorID, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::getApplicatorType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorType, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::getSourceToApplicatorMountingPositionDistance(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, SourceToApplicatorMountingPositionDistance).getFloat32(value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorDescription.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::setApplicatorType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::Item::setSourceToApplicatorMountingPositionDistance(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return SourceToApplicatorMountingPositionDistance.putFloat32(value, pos);
-}
-
-
-// --- sequence class ---
-
-DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTApplicatorSequenceInRTImageModule::DRTApplicatorSequenceInRTImageModule(const DRTApplicatorSequenceInRTImageModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTApplicatorSequenceInRTImageModule &DRTApplicatorSequenceInRTImageModule::operator=(const DRTApplicatorSequenceInRTImageModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTApplicatorSequenceInRTImageModule::~DRTApplicatorSequenceInRTImageModule()
-{
-    clear();
-}
-
-
-void DRTApplicatorSequenceInRTImageModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTApplicatorSequenceInRTImageModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTApplicatorSequenceInRTImageModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTApplicatorSequenceInRTImageModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTApplicatorSequenceInRTImageModule::Item &DRTApplicatorSequenceInRTImageModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::read(DcmItem &dataset,
-                                                       const OFString &card,
-                                                       const OFString &type,
-                                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ApplicatorSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTImageModule::write(DcmItem &dataset,
-                                                        const OFString &card,
-                                                        const OFString &type,
-                                                        const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtas6.cc b/dcmrt/libsrc/drtas6.cc
deleted file mode 100644 (file)
index b33f489..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTApplicatorSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtas6.h"
-
-
-// --- item class ---
-
-DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    ApplicatorDescription(DCM_ApplicatorDescription),
-    ApplicatorID(DCM_ApplicatorID),
-    ApplicatorType(DCM_ApplicatorType)
-{
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    ApplicatorDescription(copy.ApplicatorDescription),
-    ApplicatorID(copy.ApplicatorID),
-    ApplicatorType(copy.ApplicatorType)
-{
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        ApplicatorDescription = copy.ApplicatorDescription;
-        ApplicatorID = copy.ApplicatorID;
-        ApplicatorType = copy.ApplicatorType;
-    }
-    return *this;
-}
-
-
-void DRTApplicatorSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ApplicatorID.clear();
-        AccessoryCode.clear();
-        ApplicatorType.clear();
-        ApplicatorDescription.clear();
-    }
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return ApplicatorID.isEmpty() &&
-           AccessoryCode.isEmpty() &&
-           ApplicatorType.isEmpty() &&
-           ApplicatorDescription.isEmpty();
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AccessoryCode, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorDescription, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorID, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::getApplicatorType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorType, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorDescription.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::Item::setApplicatorType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::DRTApplicatorSequenceInRTIonBeamsModule(const DRTApplicatorSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule &DRTApplicatorSequenceInRTIonBeamsModule::operator=(const DRTApplicatorSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::~DRTApplicatorSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTApplicatorSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTApplicatorSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTApplicatorSequenceInRTIonBeamsModule::Item &DRTApplicatorSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                          const OFString &card,
-                                                          const OFString &type,
-                                                          const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ApplicatorSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                           const OFString &card,
-                                                           const OFString &type,
-                                                           const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtas7.cc b/dcmrt/libsrc/drtas7.cc
deleted file mode 100644 (file)
index 2922045..0000000
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtas7.h"
-
-
-// --- item class ---
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    ApplicatorDescription(DCM_ApplicatorDescription),
-    ApplicatorID(DCM_ApplicatorID),
-    ApplicatorType(DCM_ApplicatorType)
-{
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    ApplicatorDescription(copy.ApplicatorDescription),
-    ApplicatorID(copy.ApplicatorID),
-    ApplicatorType(copy.ApplicatorType)
-{
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
-{
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        ApplicatorDescription = copy.ApplicatorDescription;
-        ApplicatorID = copy.ApplicatorID;
-        ApplicatorType = copy.ApplicatorType;
-    }
-    return *this;
-}
-
-
-void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ApplicatorID.clear();
-        AccessoryCode.clear();
-        ApplicatorType.clear();
-        ApplicatorDescription.clear();
-    }
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
-{
-    return ApplicatorID.isEmpty() &&
-           AccessoryCode.isEmpty() &&
-           ApplicatorType.isEmpty() &&
-           ApplicatorDescription.isEmpty();
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ApplicatorID, "1", "1", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorType, "1", "1", "ApplicatorSequence");
-        getAndCheckElementFromDataset(item, ApplicatorDescription, "1", "3", "ApplicatorSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(ApplicatorID), "1", "1", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmCodeString(ApplicatorType), "1", "1", "ApplicatorSequence");
-        addElementToDataset(result, item, new DcmLongString(ApplicatorDescription), "1", "3", "ApplicatorSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AccessoryCode, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorDescription(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorDescription, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorID, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::getApplicatorType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ApplicatorType, value, pos);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorDescription.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item::setApplicatorType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ApplicatorType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::DRTApplicatorSequenceInRTIonBeamsSessionRecordModule(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::~DRTApplicatorSequenceInRTIonBeamsSessionRecordModule()
-{
-    clear();
-}
-
-
-void DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::Item &DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
-                                                                       const OFString &card,
-                                                                       const OFString &type,
-                                                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ApplicatorSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ApplicatorSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTApplicatorSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
-                                                                        const OFString &card,
-                                                                        const OFString &type,
-                                                                        const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ApplicatorSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index d0e9632980b73c3c1c6dcbb78d8dfdd4ee54871c..087c5e2043d247ae3d40fd39a4801cd665c6be6a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -494,10 +494,12 @@ OFCondition DRTApplicationSetupSequence::gotoFirstItem()
 OFCondition DRTApplicationSetupSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 60470eaa0d8be7e5960c77531fc78491ad2ff98c..b85df3a5cb61bbdacbc8ac67e5c97068450dc915 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -482,10 +482,12 @@ OFCondition DRTBrachyAccessoryDeviceSequence::gotoFirstItem()
 OFCondition DRTBrachyAccessoryDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 22863ad71882cea0ae03f49ca1696a0ea76864d0..a30c928180d834dce2db664e02b67bcb0ca2e09e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTContrastBolusAgentSequence::gotoFirstItem()
 OFCondition DRTContrastBolusAgentSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index a35402045c2d28cc654f64b517c7bd742822585c..6f830b29c5c499dab203b26c5c1f969b22108d93 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -407,10 +407,12 @@ OFCondition DRTBrachyControlPointSequence::gotoFirstItem()
 OFCondition DRTBrachyControlPointSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtbl1.cc b/dcmrt/libsrc/drtbl1.cc
new file mode 100644 (file)
index 0000000..3e3ce21
--- /dev/null
@@ -0,0 +1,986 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTBlockSequenceInRTBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtbl1.h"
+
+
+// --- item class ---
+
+DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    BlockData(DCM_BlockData),
+    BlockDivergence(DCM_BlockDivergence),
+    BlockMountingPosition(DCM_BlockMountingPosition),
+    BlockName(DCM_BlockName),
+    BlockNumber(DCM_BlockNumber),
+    BlockNumberOfPoints(DCM_BlockNumberOfPoints),
+    BlockThickness(DCM_BlockThickness),
+    BlockTransmission(DCM_BlockTransmission),
+    BlockTrayID(DCM_BlockTrayID),
+    BlockType(DCM_BlockType),
+    MaterialID(DCM_MaterialID),
+    SourceToBlockTrayDistance(DCM_SourceToBlockTrayDistance),
+    TrayAccessoryCode(DCM_TrayAccessoryCode)
+{
+}
+
+
+DRTBlockSequenceInRTBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    BlockData(copy.BlockData),
+    BlockDivergence(copy.BlockDivergence),
+    BlockMountingPosition(copy.BlockMountingPosition),
+    BlockName(copy.BlockName),
+    BlockNumber(copy.BlockNumber),
+    BlockNumberOfPoints(copy.BlockNumberOfPoints),
+    BlockThickness(copy.BlockThickness),
+    BlockTransmission(copy.BlockTransmission),
+    BlockTrayID(copy.BlockTrayID),
+    BlockType(copy.BlockType),
+    MaterialID(copy.MaterialID),
+    SourceToBlockTrayDistance(copy.SourceToBlockTrayDistance),
+    TrayAccessoryCode(copy.TrayAccessoryCode)
+{
+}
+
+
+DRTBlockSequenceInRTBeamsModule::Item::~Item()
+{
+}
+
+
+DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        BlockData = copy.BlockData;
+        BlockDivergence = copy.BlockDivergence;
+        BlockMountingPosition = copy.BlockMountingPosition;
+        BlockName = copy.BlockName;
+        BlockNumber = copy.BlockNumber;
+        BlockNumberOfPoints = copy.BlockNumberOfPoints;
+        BlockThickness = copy.BlockThickness;
+        BlockTransmission = copy.BlockTransmission;
+        BlockTrayID = copy.BlockTrayID;
+        BlockType = copy.BlockType;
+        MaterialID = copy.MaterialID;
+        SourceToBlockTrayDistance = copy.SourceToBlockTrayDistance;
+        TrayAccessoryCode = copy.TrayAccessoryCode;
+    }
+    return *this;
+}
+
+
+void DRTBlockSequenceInRTBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        BlockTrayID.clear();
+        TrayAccessoryCode.clear();
+        AccessoryCode.clear();
+        SourceToBlockTrayDistance.clear();
+        BlockType.clear();
+        BlockDivergence.clear();
+        BlockMountingPosition.clear();
+        BlockNumber.clear();
+        BlockName.clear();
+        MaterialID.clear();
+        BlockThickness.clear();
+        BlockTransmission.clear();
+        BlockNumberOfPoints.clear();
+        BlockData.clear();
+    }
+}
+
+
+OFBool DRTBlockSequenceInRTBeamsModule::Item::isEmpty()
+{
+    return BlockTrayID.isEmpty() &&
+           TrayAccessoryCode.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           SourceToBlockTrayDistance.isEmpty() &&
+           BlockType.isEmpty() &&
+           BlockDivergence.isEmpty() &&
+           BlockMountingPosition.isEmpty() &&
+           BlockNumber.isEmpty() &&
+           BlockName.isEmpty() &&
+           MaterialID.isEmpty() &&
+           BlockThickness.isEmpty() &&
+           BlockTransmission.isEmpty() &&
+           BlockNumberOfPoints.isEmpty() &&
+           BlockData.isEmpty();
+}
+
+
+OFBool DRTBlockSequenceInRTBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, BlockTrayID, "1", "3", "BlockSequence");
+        getAndCheckElementFromDataset(item, TrayAccessoryCode, "1", "3", "BlockSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "BlockSequence");
+        getAndCheckElementFromDataset(item, SourceToBlockTrayDistance, "1", "2", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockType, "1", "1", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockDivergence, "1", "2", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockMountingPosition, "1", "3", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockNumber, "1", "1", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockName, "1", "3", "BlockSequence");
+        getAndCheckElementFromDataset(item, MaterialID, "1", "2", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockThickness, "1", "2C", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockTransmission, "1", "2C", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockNumberOfPoints, "1", "2", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockData, "2-2n", "2", "BlockSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(BlockTrayID), "1", "3", "BlockSequence");
+        addElementToDataset(result, item, new DcmLongString(TrayAccessoryCode), "1", "3", "BlockSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "BlockSequence");
+        addElementToDataset(result, item, new DcmDecimalString(SourceToBlockTrayDistance), "1", "2", "BlockSequence");
+        addElementToDataset(result, item, new DcmCodeString(BlockType), "1", "1", "BlockSequence");
+        addElementToDataset(result, item, new DcmCodeString(BlockDivergence), "1", "2", "BlockSequence");
+        addElementToDataset(result, item, new DcmCodeString(BlockMountingPosition), "1", "3", "BlockSequence");
+        addElementToDataset(result, item, new DcmIntegerString(BlockNumber), "1", "1", "BlockSequence");
+        addElementToDataset(result, item, new DcmLongString(BlockName), "1", "3", "BlockSequence");
+        addElementToDataset(result, item, new DcmShortString(MaterialID), "1", "2", "BlockSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "2C", "BlockSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BlockTransmission), "1", "2C", "BlockSequence");
+        addElementToDataset(result, item, new DcmIntegerString(BlockNumberOfPoints), "1", "2", "BlockSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BlockData), "2-2n", "2", "BlockSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockData, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BlockData).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BlockData).getFloat64Vector(value);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockDivergence(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockDivergence, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockMountingPosition(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockMountingPosition, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockName, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockNumber, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, BlockNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockNumberOfPoints, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, BlockNumberOfPoints).getSint32(value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockThickness, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BlockThickness).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTransmission(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockTransmission, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTransmission(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BlockTransmission).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTrayID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockTrayID, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BlockType, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getMaterialID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MaterialID, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SourceToBlockTrayDistance, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, SourceToBlockTrayDistance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TrayAccessoryCode, value, pos);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockData(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal;
+        if (result.good())
+            result = BlockData.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockDivergence(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockDivergence.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockMountingPosition(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockMountingPosition.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumberOfPoints(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockNumberOfPoints.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockThickness(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockThickness.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockTransmission(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockTransmission.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockTrayID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockTrayID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setMaterialID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MaterialID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setSourceToBlockTrayDistance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = SourceToBlockTrayDistance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TrayAccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const DRTBlockSequenceInRTBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTBlockSequenceInRTBeamsModule &DRTBlockSequenceInRTBeamsModule::operator=(const DRTBlockSequenceInRTBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTBlockSequenceInRTBeamsModule::~DRTBlockSequenceInRTBeamsModule()
+{
+    clear();
+}
+
+
+void DRTBlockSequenceInRTBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTBlockSequenceInRTBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTBlockSequenceInRTBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTBlockSequenceInRTBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::read(DcmItem &dataset,
+                                                  const OFString &card,
+                                                  const OFString &type,
+                                                  const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_BlockSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_BlockSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTBlockSequenceInRTBeamsModule::write(DcmItem &dataset,
+                                                   const OFString &card,
+                                                   const OFString &type,
+                                                   const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BlockSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 37548f8292720ecb2409d7c5f632a82a58c1f5a1..7035df4593c6c35a89294d3e09605fcd2be5a141 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTBlockSequenceInRTBeamsModule
+ *  Source file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -19,7 +19,7 @@
 
 // --- item class ---
 
-DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+DRTBlockSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     AccessoryCode(DCM_AccessoryCode),
     BlockData(DCM_BlockData),
@@ -29,7 +29,6 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem)
     BlockNumber(DCM_BlockNumber),
     BlockNumberOfPoints(DCM_BlockNumberOfPoints),
     BlockThickness(DCM_BlockThickness),
-    BlockTransmission(DCM_BlockTransmission),
     BlockTrayID(DCM_BlockTrayID),
     BlockType(DCM_BlockType),
     MaterialID(DCM_MaterialID),
@@ -39,7 +38,7 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem)
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item::Item(const Item &copy)
+DRTBlockSequenceInRTImageModule::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     AccessoryCode(copy.AccessoryCode),
     BlockData(copy.BlockData),
@@ -49,7 +48,6 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const Item &copy)
     BlockNumber(copy.BlockNumber),
     BlockNumberOfPoints(copy.BlockNumberOfPoints),
     BlockThickness(copy.BlockThickness),
-    BlockTransmission(copy.BlockTransmission),
     BlockTrayID(copy.BlockTrayID),
     BlockType(copy.BlockType),
     MaterialID(copy.MaterialID),
@@ -59,12 +57,12 @@ DRTBlockSequenceInRTBeamsModule::Item::Item(const Item &copy)
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item::~Item()
+DRTBlockSequenceInRTImageModule::Item::~Item()
 {
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::operator=(const Item &copy)
+DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -77,7 +75,6 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::op
         BlockNumber = copy.BlockNumber;
         BlockNumberOfPoints = copy.BlockNumberOfPoints;
         BlockThickness = copy.BlockThickness;
-        BlockTransmission = copy.BlockTransmission;
         BlockTrayID = copy.BlockTrayID;
         BlockType = copy.BlockType;
         MaterialID = copy.MaterialID;
@@ -88,7 +85,7 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::Item::op
 }
 
 
-void DRTBlockSequenceInRTBeamsModule::Item::clear()
+void DRTBlockSequenceInRTImageModule::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -104,14 +101,13 @@ void DRTBlockSequenceInRTBeamsModule::Item::clear()
         BlockName.clear();
         MaterialID.clear();
         BlockThickness.clear();
-        BlockTransmission.clear();
         BlockNumberOfPoints.clear();
         BlockData.clear();
     }
 }
 
 
-OFBool DRTBlockSequenceInRTBeamsModule::Item::isEmpty()
+OFBool DRTBlockSequenceInRTImageModule::Item::isEmpty()
 {
     return BlockTrayID.isEmpty() &&
            TrayAccessoryCode.isEmpty() &&
@@ -124,19 +120,18 @@ OFBool DRTBlockSequenceInRTBeamsModule::Item::isEmpty()
            BlockName.isEmpty() &&
            MaterialID.isEmpty() &&
            BlockThickness.isEmpty() &&
-           BlockTransmission.isEmpty() &&
            BlockNumberOfPoints.isEmpty() &&
            BlockData.isEmpty();
 }
 
 
-OFBool DRTBlockSequenceInRTBeamsModule::Item::isValid() const
+OFBool DRTBlockSequenceInRTImageModule::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item)
+OFCondition DRTBlockSequenceInRTImageModule::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -153,8 +148,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, BlockNumber, "1", "1", "BlockSequence");
         getAndCheckElementFromDataset(item, BlockName, "1", "3", "BlockSequence");
         getAndCheckElementFromDataset(item, MaterialID, "1", "2", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockThickness, "1", "2C", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockTransmission, "1", "2C", "BlockSequence");
+        getAndCheckElementFromDataset(item, BlockThickness, "1", "3", "BlockSequence");
         getAndCheckElementFromDataset(item, BlockNumberOfPoints, "1", "2", "BlockSequence");
         getAndCheckElementFromDataset(item, BlockData, "2-2n", "2", "BlockSequence");
         result = EC_Normal;
@@ -163,7 +157,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::read(DcmItem &item)
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item)
+OFCondition DRTBlockSequenceInRTImageModule::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -179,8 +173,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmIntegerString(BlockNumber), "1", "1", "BlockSequence");
         addElementToDataset(result, item, new DcmLongString(BlockName), "1", "3", "BlockSequence");
         addElementToDataset(result, item, new DcmShortString(MaterialID), "1", "2", "BlockSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "2C", "BlockSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BlockTransmission), "1", "2C", "BlockSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "3", "BlockSequence");
         addElementToDataset(result, item, new DcmIntegerString(BlockNumberOfPoints), "1", "2", "BlockSequence");
         addElementToDataset(result, item, new DcmDecimalString(BlockData), "2-2n", "2", "BlockSequence");
     }
@@ -188,7 +181,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::write(DcmItem &item)
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -197,7 +190,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getAccessoryCode(OFString &va
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -206,7 +199,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFString &value,
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(Float64 &value, const unsigned long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -215,7 +208,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(Float64 &value,
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFVector<Float64> &value) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(OFVector<Float64> &value) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -224,7 +217,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockData(OFVector<Float64
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockDivergence(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockDivergence(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -233,7 +226,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockDivergence(OFString &
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockMountingPosition(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockMountingPosition(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -242,7 +235,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockMountingPosition(OFSt
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockName(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockName(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -251,7 +244,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockName(OFString &value,
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumber(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -260,7 +253,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(OFString &valu
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(Sint32 &value, const unsigned long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumber(Sint32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -269,7 +262,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumber(Sint32 &value,
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumberOfPoints(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -278,7 +271,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(OFStri
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(Sint32 &value, const unsigned long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumberOfPoints(Sint32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -287,7 +280,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockNumberOfPoints(Sint32
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockThickness(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -296,7 +289,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(OFString &v
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(Float64 &value, const unsigned long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockThickness(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -305,25 +298,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockThickness(Float64 &va
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTransmission(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockTransmission, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTransmission(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BlockTransmission).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTrayID(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockTrayID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -332,7 +307,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockTrayID(OFString &valu
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockType(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockType(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -341,7 +316,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getBlockType(OFString &value,
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getMaterialID(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getMaterialID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -350,7 +325,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getMaterialID(OFString &value
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getSourceToBlockTrayDistance(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -359,7 +334,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -368,7 +343,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getSourceToBlockTrayDistance(
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const
+OFCondition DRTBlockSequenceInRTImageModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -377,7 +352,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::getTrayAccessoryCode(OFString
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -390,7 +365,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setAccessoryCode(const OFStri
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockData(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockData(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -403,7 +378,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockData(const OFString &
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockDivergence(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockDivergence(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -416,7 +391,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockDivergence(const OFSt
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockMountingPosition(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockMountingPosition(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -429,7 +404,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockMountingPosition(cons
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockName(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockName(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -442,7 +417,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockName(const OFString &
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumber(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -455,7 +430,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumber(const OFString
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumberOfPoints(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockNumberOfPoints(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -468,7 +443,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockNumberOfPoints(const
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockThickness(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockThickness(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -481,20 +456,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockThickness(const OFStr
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockTransmission(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockTransmission.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockTrayID(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockTrayID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -507,7 +469,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockTrayID(const OFString
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockType(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockType(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -520,7 +482,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setBlockType(const OFString &
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setMaterialID(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setMaterialID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -533,7 +495,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setMaterialID(const OFString
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setSourceToBlockTrayDistance(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setSourceToBlockTrayDistance(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -546,7 +508,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setSourceToBlockTrayDistance(
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check)
+OFCondition DRTBlockSequenceInRTImageModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -561,7 +523,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::Item::setTrayAccessoryCode(const OF
 
 // --- sequence class ---
 
-DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const OFBool emptyDefaultSequence)
+DRTBlockSequenceInRTImageModule::DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -571,7 +533,7 @@ DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const OFBool em
 }
 
 
-DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const DRTBlockSequenceInRTBeamsModule &copy)
+DRTBlockSequenceInRTImageModule::DRTBlockSequenceInRTImageModule(const DRTBlockSequenceInRTImageModule &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -597,7 +559,7 @@ DRTBlockSequenceInRTBeamsModule::DRTBlockSequenceInRTBeamsModule(const DRTBlockS
 }
 
 
-DRTBlockSequenceInRTBeamsModule &DRTBlockSequenceInRTBeamsModule::operator=(const DRTBlockSequenceInRTBeamsModule &copy)
+DRTBlockSequenceInRTImageModule &DRTBlockSequenceInRTImageModule::operator=(const DRTBlockSequenceInRTImageModule &copy)
 {
     if (this != &copy)
     {
@@ -625,13 +587,13 @@ DRTBlockSequenceInRTBeamsModule &DRTBlockSequenceInRTBeamsModule::operator=(cons
 }
 
 
-DRTBlockSequenceInRTBeamsModule::~DRTBlockSequenceInRTBeamsModule()
+DRTBlockSequenceInRTImageModule::~DRTBlockSequenceInRTImageModule()
 {
     clear();
 }
 
 
-void DRTBlockSequenceInRTBeamsModule::clear()
+void DRTBlockSequenceInRTImageModule::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -650,25 +612,25 @@ void DRTBlockSequenceInRTBeamsModule::clear()
 }
 
 
-OFBool DRTBlockSequenceInRTBeamsModule::isEmpty()
+OFBool DRTBlockSequenceInRTImageModule::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTBlockSequenceInRTBeamsModule::isValid() const
+OFBool DRTBlockSequenceInRTImageModule::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-size_t DRTBlockSequenceInRTBeamsModule::getNumberOfItems() const
+size_t DRTBlockSequenceInRTImageModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoFirstItem()
+OFCondition DRTBlockSequenceInRTImageModule::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -680,19 +642,21 @@ OFCondition DRTBlockSequenceInRTBeamsModule::gotoFirstItem()
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoNextItem()
+OFCondition DRTBlockSequenceInRTImageModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -712,7 +676,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListIt
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -732,13 +696,13 @@ OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num, OFListCo
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::gotoItem(const size_t num)
+OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::getCurrentItem(Item *&item) const
+OFCondition DRTBlockSequenceInRTImageModule::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -750,7 +714,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::getCurrentItem(Item *&item) const
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getCurrentItem()
+DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -759,7 +723,7 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getCurre
 }
 
 
-const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getCurrentItem() const
+const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -768,7 +732,7 @@ const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::ge
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
+OFCondition DRTBlockSequenceInRTImageModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -778,7 +742,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::getItem(const size_t num, Item *&it
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num)
+DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -788,7 +752,7 @@ DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(
 }
 
 
-const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::getItem(const size_t num) const
+const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -798,19 +762,19 @@ const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::ge
 }
 
 
-DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num)
+DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTBlockSequenceInRTBeamsModule::Item &DRTBlockSequenceInRTBeamsModule::operator[](const size_t num) const
+const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::addItem(Item *&item)
+OFCondition DRTBlockSequenceInRTImageModule::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -827,7 +791,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
+OFCondition DRTBlockSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -850,7 +814,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::insertItem(const size_t pos, Item *
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::removeItem(const size_t pos)
+OFCondition DRTBlockSequenceInRTImageModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -868,7 +832,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::removeItem(const size_t pos)
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::read(DcmItem &dataset,
+OFCondition DRTBlockSequenceInRTImageModule::read(DcmItem &dataset,
                                                   const OFString &card,
                                                   const OFString &type,
                                                   const char *moduleName)
@@ -918,7 +882,7 @@ OFCondition DRTBlockSequenceInRTBeamsModule::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTBlockSequenceInRTBeamsModule::write(DcmItem &dataset,
+OFCondition DRTBlockSequenceInRTImageModule::write(DcmItem &dataset,
                                                    const OFString &card,
                                                    const OFString &type,
                                                    const char *moduleName)
diff --git a/dcmrt/libsrc/drtbl5.cc b/dcmrt/libsrc/drtbl5.cc
deleted file mode 100644 (file)
index 18fa5c3..0000000
+++ /dev/null
@@ -1,946 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTBlockSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtbl5.h"
-
-
-// --- item class ---
-
-DRTBlockSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    BlockData(DCM_BlockData),
-    BlockDivergence(DCM_BlockDivergence),
-    BlockMountingPosition(DCM_BlockMountingPosition),
-    BlockName(DCM_BlockName),
-    BlockNumber(DCM_BlockNumber),
-    BlockNumberOfPoints(DCM_BlockNumberOfPoints),
-    BlockThickness(DCM_BlockThickness),
-    BlockTrayID(DCM_BlockTrayID),
-    BlockType(DCM_BlockType),
-    MaterialID(DCM_MaterialID),
-    SourceToBlockTrayDistance(DCM_SourceToBlockTrayDistance),
-    TrayAccessoryCode(DCM_TrayAccessoryCode)
-{
-}
-
-
-DRTBlockSequenceInRTImageModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    BlockData(copy.BlockData),
-    BlockDivergence(copy.BlockDivergence),
-    BlockMountingPosition(copy.BlockMountingPosition),
-    BlockName(copy.BlockName),
-    BlockNumber(copy.BlockNumber),
-    BlockNumberOfPoints(copy.BlockNumberOfPoints),
-    BlockThickness(copy.BlockThickness),
-    BlockTrayID(copy.BlockTrayID),
-    BlockType(copy.BlockType),
-    MaterialID(copy.MaterialID),
-    SourceToBlockTrayDistance(copy.SourceToBlockTrayDistance),
-    TrayAccessoryCode(copy.TrayAccessoryCode)
-{
-}
-
-
-DRTBlockSequenceInRTImageModule::Item::~Item()
-{
-}
-
-
-DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        BlockData = copy.BlockData;
-        BlockDivergence = copy.BlockDivergence;
-        BlockMountingPosition = copy.BlockMountingPosition;
-        BlockName = copy.BlockName;
-        BlockNumber = copy.BlockNumber;
-        BlockNumberOfPoints = copy.BlockNumberOfPoints;
-        BlockThickness = copy.BlockThickness;
-        BlockTrayID = copy.BlockTrayID;
-        BlockType = copy.BlockType;
-        MaterialID = copy.MaterialID;
-        SourceToBlockTrayDistance = copy.SourceToBlockTrayDistance;
-        TrayAccessoryCode = copy.TrayAccessoryCode;
-    }
-    return *this;
-}
-
-
-void DRTBlockSequenceInRTImageModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        BlockTrayID.clear();
-        TrayAccessoryCode.clear();
-        AccessoryCode.clear();
-        SourceToBlockTrayDistance.clear();
-        BlockType.clear();
-        BlockDivergence.clear();
-        BlockMountingPosition.clear();
-        BlockNumber.clear();
-        BlockName.clear();
-        MaterialID.clear();
-        BlockThickness.clear();
-        BlockNumberOfPoints.clear();
-        BlockData.clear();
-    }
-}
-
-
-OFBool DRTBlockSequenceInRTImageModule::Item::isEmpty()
-{
-    return BlockTrayID.isEmpty() &&
-           TrayAccessoryCode.isEmpty() &&
-           AccessoryCode.isEmpty() &&
-           SourceToBlockTrayDistance.isEmpty() &&
-           BlockType.isEmpty() &&
-           BlockDivergence.isEmpty() &&
-           BlockMountingPosition.isEmpty() &&
-           BlockNumber.isEmpty() &&
-           BlockName.isEmpty() &&
-           MaterialID.isEmpty() &&
-           BlockThickness.isEmpty() &&
-           BlockNumberOfPoints.isEmpty() &&
-           BlockData.isEmpty();
-}
-
-
-OFBool DRTBlockSequenceInRTImageModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, BlockTrayID, "1", "3", "BlockSequence");
-        getAndCheckElementFromDataset(item, TrayAccessoryCode, "1", "3", "BlockSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "BlockSequence");
-        getAndCheckElementFromDataset(item, SourceToBlockTrayDistance, "1", "2", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockType, "1", "1", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockDivergence, "1", "2", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockMountingPosition, "1", "3", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockNumber, "1", "1", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockName, "1", "3", "BlockSequence");
-        getAndCheckElementFromDataset(item, MaterialID, "1", "2", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockThickness, "1", "3", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockNumberOfPoints, "1", "2", "BlockSequence");
-        getAndCheckElementFromDataset(item, BlockData, "2-2n", "2", "BlockSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(BlockTrayID), "1", "3", "BlockSequence");
-        addElementToDataset(result, item, new DcmLongString(TrayAccessoryCode), "1", "3", "BlockSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "BlockSequence");
-        addElementToDataset(result, item, new DcmDecimalString(SourceToBlockTrayDistance), "1", "2", "BlockSequence");
-        addElementToDataset(result, item, new DcmCodeString(BlockType), "1", "1", "BlockSequence");
-        addElementToDataset(result, item, new DcmCodeString(BlockDivergence), "1", "2", "BlockSequence");
-        addElementToDataset(result, item, new DcmCodeString(BlockMountingPosition), "1", "3", "BlockSequence");
-        addElementToDataset(result, item, new DcmIntegerString(BlockNumber), "1", "1", "BlockSequence");
-        addElementToDataset(result, item, new DcmLongString(BlockName), "1", "3", "BlockSequence");
-        addElementToDataset(result, item, new DcmShortString(MaterialID), "1", "2", "BlockSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "3", "BlockSequence");
-        addElementToDataset(result, item, new DcmIntegerString(BlockNumberOfPoints), "1", "2", "BlockSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BlockData), "2-2n", "2", "BlockSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AccessoryCode, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockData, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BlockData).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockData(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BlockData).getFloat64Vector(value);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockDivergence(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockDivergence, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockMountingPosition(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockMountingPosition, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockName, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockNumber, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, BlockNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumberOfPoints(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockNumberOfPoints, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockNumberOfPoints(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, BlockNumberOfPoints).getSint32(value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockThickness(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockThickness, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockThickness(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BlockThickness).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockTrayID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockTrayID, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getBlockType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BlockType, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getMaterialID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(MaterialID, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getSourceToBlockTrayDistance(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(SourceToBlockTrayDistance, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getSourceToBlockTrayDistance(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, SourceToBlockTrayDistance).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::getTrayAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TrayAccessoryCode, value, pos);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockData(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal;
-        if (result.good())
-            result = BlockData.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockDivergence(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockDivergence.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockMountingPosition(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockMountingPosition.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockNumberOfPoints(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockNumberOfPoints.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockThickness(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockThickness.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockTrayID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockTrayID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setBlockType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BlockType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setMaterialID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = MaterialID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setSourceToBlockTrayDistance(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = SourceToBlockTrayDistance.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::Item::setTrayAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TrayAccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTBlockSequenceInRTImageModule::DRTBlockSequenceInRTImageModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTBlockSequenceInRTImageModule::DRTBlockSequenceInRTImageModule(const DRTBlockSequenceInRTImageModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTBlockSequenceInRTImageModule &DRTBlockSequenceInRTImageModule::operator=(const DRTBlockSequenceInRTImageModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTBlockSequenceInRTImageModule::~DRTBlockSequenceInRTImageModule()
-{
-    clear();
-}
-
-
-void DRTBlockSequenceInRTImageModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTBlockSequenceInRTImageModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTBlockSequenceInRTImageModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTBlockSequenceInRTImageModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTBlockSequenceInRTImageModule::Item &DRTBlockSequenceInRTImageModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::read(DcmItem &dataset,
-                                                  const OFString &card,
-                                                  const OFString &type,
-                                                  const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_BlockSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_BlockSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTBlockSequenceInRTImageModule::write(DcmItem &dataset,
-                                                   const OFString &card,
-                                                   const OFString &type,
-                                                   const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BlockSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index dae74eaa7f4182297c36f1a1752ef7f5906bd774..6229306882b8b001f8c60da7cc3677c50bec1c95 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -281,10 +281,12 @@ OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoFirstItem()
 OFCondition DRTBeamLimitingDeviceLeafPairsSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5f6f8d53a592f1f237736ed97b6817f4b60d513e..6c8ef01a1e1834e6c1eadc7daf44053df8a9a4e6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -290,10 +290,12 @@ OFCondition DRTBeamLimitingDevicePositionSequence::gotoFirstItem()
 OFCondition DRTBeamLimitingDevicePositionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 7b94c34aa964a7546ae76a2a38db5494b299d843..ada067ca44ecb634ddd4e5a14bb3e83a3699e708 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -366,10 +366,12 @@ OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoFirstItem()
 OFCondition DRTBeamLimitingDeviceSequenceInRTBeamsModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtblds2.cc b/dcmrt/libsrc/drtblds2.cc
new file mode 100644 (file)
index 0000000..26d1da7
--- /dev/null
@@ -0,0 +1,716 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTBeamLimitingDeviceSequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtblds2.h"
+
+
+// --- item class ---
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    LeafJawPositions(DCM_LeafJawPositions),
+    LeafPositionBoundaries(DCM_LeafPositionBoundaries),
+    NumberOfLeafJawPairs(DCM_NumberOfLeafJawPairs),
+    RTBeamLimitingDeviceType(DCM_RTBeamLimitingDeviceType),
+    SourceToBeamLimitingDeviceDistance(DCM_SourceToBeamLimitingDeviceDistance)
+{
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    LeafJawPositions(copy.LeafJawPositions),
+    LeafPositionBoundaries(copy.LeafPositionBoundaries),
+    NumberOfLeafJawPairs(copy.NumberOfLeafJawPairs),
+    RTBeamLimitingDeviceType(copy.RTBeamLimitingDeviceType),
+    SourceToBeamLimitingDeviceDistance(copy.SourceToBeamLimitingDeviceDistance)
+{
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item::~Item()
+{
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        LeafJawPositions = copy.LeafJawPositions;
+        LeafPositionBoundaries = copy.LeafPositionBoundaries;
+        NumberOfLeafJawPairs = copy.NumberOfLeafJawPairs;
+        RTBeamLimitingDeviceType = copy.RTBeamLimitingDeviceType;
+        SourceToBeamLimitingDeviceDistance = copy.SourceToBeamLimitingDeviceDistance;
+    }
+    return *this;
+}
+
+
+void DRTBeamLimitingDeviceSequenceInRTImageModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        RTBeamLimitingDeviceType.clear();
+        SourceToBeamLimitingDeviceDistance.clear();
+        NumberOfLeafJawPairs.clear();
+        LeafPositionBoundaries.clear();
+        LeafJawPositions.clear();
+    }
+}
+
+
+OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isEmpty()
+{
+    return RTBeamLimitingDeviceType.isEmpty() &&
+           SourceToBeamLimitingDeviceDistance.isEmpty() &&
+           NumberOfLeafJawPairs.isEmpty() &&
+           LeafPositionBoundaries.isEmpty() &&
+           LeafJawPositions.isEmpty();
+}
+
+
+OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, RTBeamLimitingDeviceType, "1", "1", "BeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, SourceToBeamLimitingDeviceDistance, "1", "3", "BeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, NumberOfLeafJawPairs, "1", "1", "BeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, LeafPositionBoundaries, "3-n", "2C", "BeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, LeafJawPositions, "2-2n", "1", "BeamLimitingDeviceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmCodeString(RTBeamLimitingDeviceType), "1", "1", "BeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(SourceToBeamLimitingDeviceDistance), "1", "3", "BeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmIntegerString(NumberOfLeafJawPairs), "1", "1", "BeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(LeafPositionBoundaries), "3-n", "2C", "BeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(LeafJawPositions), "2-2n", "1", "BeamLimitingDeviceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LeafJawPositions, value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64Vector(value);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LeafPositionBoundaries, value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64Vector(value);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(NumberOfLeafJawPairs, value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, NumberOfLeafJawPairs).getSint32(value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getRTBeamLimitingDeviceType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RTBeamLimitingDeviceType, value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SourceToBeamLimitingDeviceDistance, value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, SourceToBeamLimitingDeviceDistance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafJawPositions(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal;
+        if (result.good())
+            result = LeafJawPositions.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafPositionBoundaries(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "3-n") : EC_Normal;
+        if (result.good())
+            result = LeafPositionBoundaries.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setNumberOfLeafJawPairs(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = NumberOfLeafJawPairs.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setRTBeamLimitingDeviceType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = RTBeamLimitingDeviceType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = SourceToBeamLimitingDeviceDistance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule &DRTBeamLimitingDeviceSequenceInRTImageModule::operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::~DRTBeamLimitingDeviceSequenceInRTImageModule()
+{
+    clear();
+}
+
+
+void DRTBeamLimitingDeviceSequenceInRTImageModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTBeamLimitingDeviceSequenceInRTImageModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::read(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_BeamLimitingDeviceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_BeamLimitingDeviceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::write(DcmItem &dataset,
+                                                                const OFString &card,
+                                                                const OFString &type,
+                                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BeamLimitingDeviceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtblds5.cc b/dcmrt/libsrc/drtblds5.cc
deleted file mode 100644 (file)
index 73f4ed0..0000000
+++ /dev/null
@@ -1,714 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTBeamLimitingDeviceSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtblds5.h"
-
-
-// --- item class ---
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    LeafJawPositions(DCM_LeafJawPositions),
-    LeafPositionBoundaries(DCM_LeafPositionBoundaries),
-    NumberOfLeafJawPairs(DCM_NumberOfLeafJawPairs),
-    RTBeamLimitingDeviceType(DCM_RTBeamLimitingDeviceType),
-    SourceToBeamLimitingDeviceDistance(DCM_SourceToBeamLimitingDeviceDistance)
-{
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    LeafJawPositions(copy.LeafJawPositions),
-    LeafPositionBoundaries(copy.LeafPositionBoundaries),
-    NumberOfLeafJawPairs(copy.NumberOfLeafJawPairs),
-    RTBeamLimitingDeviceType(copy.RTBeamLimitingDeviceType),
-    SourceToBeamLimitingDeviceDistance(copy.SourceToBeamLimitingDeviceDistance)
-{
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item::~Item()
-{
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        LeafJawPositions = copy.LeafJawPositions;
-        LeafPositionBoundaries = copy.LeafPositionBoundaries;
-        NumberOfLeafJawPairs = copy.NumberOfLeafJawPairs;
-        RTBeamLimitingDeviceType = copy.RTBeamLimitingDeviceType;
-        SourceToBeamLimitingDeviceDistance = copy.SourceToBeamLimitingDeviceDistance;
-    }
-    return *this;
-}
-
-
-void DRTBeamLimitingDeviceSequenceInRTImageModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        RTBeamLimitingDeviceType.clear();
-        SourceToBeamLimitingDeviceDistance.clear();
-        NumberOfLeafJawPairs.clear();
-        LeafPositionBoundaries.clear();
-        LeafJawPositions.clear();
-    }
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isEmpty()
-{
-    return RTBeamLimitingDeviceType.isEmpty() &&
-           SourceToBeamLimitingDeviceDistance.isEmpty() &&
-           NumberOfLeafJawPairs.isEmpty() &&
-           LeafPositionBoundaries.isEmpty() &&
-           LeafJawPositions.isEmpty();
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, RTBeamLimitingDeviceType, "1", "1", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, SourceToBeamLimitingDeviceDistance, "1", "3", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, NumberOfLeafJawPairs, "1", "1", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, LeafPositionBoundaries, "3-n", "2C", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, LeafJawPositions, "2-2n", "1", "BeamLimitingDeviceSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmCodeString(RTBeamLimitingDeviceType), "1", "1", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(SourceToBeamLimitingDeviceDistance), "1", "3", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmIntegerString(NumberOfLeafJawPairs), "1", "1", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(LeafPositionBoundaries), "3-n", "2C", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(LeafJawPositions), "2-2n", "1", "BeamLimitingDeviceSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(LeafJawPositions, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafJawPositions(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64Vector(value);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(LeafPositionBoundaries, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getLeafPositionBoundaries(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64Vector(value);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(NumberOfLeafJawPairs, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, NumberOfLeafJawPairs).getSint32(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getRTBeamLimitingDeviceType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(RTBeamLimitingDeviceType, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(SourceToBeamLimitingDeviceDistance, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, SourceToBeamLimitingDeviceDistance).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafJawPositions(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal;
-        if (result.good())
-            result = LeafJawPositions.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setLeafPositionBoundaries(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "3-n") : EC_Normal;
-        if (result.good())
-            result = LeafPositionBoundaries.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setNumberOfLeafJawPairs(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = NumberOfLeafJawPairs.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setRTBeamLimitingDeviceType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = RTBeamLimitingDeviceType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::Item::setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = SourceToBeamLimitingDeviceDistance.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::DRTBeamLimitingDeviceSequenceInRTImageModule(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule &DRTBeamLimitingDeviceSequenceInRTImageModule::operator=(const DRTBeamLimitingDeviceSequenceInRTImageModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::~DRTBeamLimitingDeviceSequenceInRTImageModule()
-{
-    clear();
-}
-
-
-void DRTBeamLimitingDeviceSequenceInRTImageModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTImageModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTBeamLimitingDeviceSequenceInRTImageModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTBeamLimitingDeviceSequenceInRTImageModule::Item &DRTBeamLimitingDeviceSequenceInRTImageModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::read(DcmItem &dataset,
-                                                               const OFString &card,
-                                                               const OFString &type,
-                                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_BeamLimitingDeviceSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_BeamLimitingDeviceSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTImageModule::write(DcmItem &dataset,
-                                                                const OFString &card,
-                                                                const OFString &type,
-                                                                const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BeamLimitingDeviceSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtblds6.cc b/dcmrt/libsrc/drtblds6.cc
deleted file mode 100644 (file)
index 6eab998..0000000
+++ /dev/null
@@ -1,714 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtblds6.h"
-
-
-// --- item class ---
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    LeafJawPositions(DCM_LeafJawPositions),
-    LeafPositionBoundaries(DCM_LeafPositionBoundaries),
-    NumberOfLeafJawPairs(DCM_NumberOfLeafJawPairs),
-    RTBeamLimitingDeviceType(DCM_RTBeamLimitingDeviceType),
-    SourceToBeamLimitingDeviceDistance(DCM_SourceToBeamLimitingDeviceDistance)
-{
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    LeafJawPositions(copy.LeafJawPositions),
-    LeafPositionBoundaries(copy.LeafPositionBoundaries),
-    NumberOfLeafJawPairs(copy.NumberOfLeafJawPairs),
-    RTBeamLimitingDeviceType(copy.RTBeamLimitingDeviceType),
-    SourceToBeamLimitingDeviceDistance(copy.SourceToBeamLimitingDeviceDistance)
-{
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        LeafJawPositions = copy.LeafJawPositions;
-        LeafPositionBoundaries = copy.LeafPositionBoundaries;
-        NumberOfLeafJawPairs = copy.NumberOfLeafJawPairs;
-        RTBeamLimitingDeviceType = copy.RTBeamLimitingDeviceType;
-        SourceToBeamLimitingDeviceDistance = copy.SourceToBeamLimitingDeviceDistance;
-    }
-    return *this;
-}
-
-
-void DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        RTBeamLimitingDeviceType.clear();
-        SourceToBeamLimitingDeviceDistance.clear();
-        NumberOfLeafJawPairs.clear();
-        LeafPositionBoundaries.clear();
-        LeafJawPositions.clear();
-    }
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return RTBeamLimitingDeviceType.isEmpty() &&
-           SourceToBeamLimitingDeviceDistance.isEmpty() &&
-           NumberOfLeafJawPairs.isEmpty() &&
-           LeafPositionBoundaries.isEmpty() &&
-           LeafJawPositions.isEmpty();
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, RTBeamLimitingDeviceType, "1", "1", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, SourceToBeamLimitingDeviceDistance, "1", "3", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, NumberOfLeafJawPairs, "1", "1", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, LeafPositionBoundaries, "3-n", "2C", "BeamLimitingDeviceSequence");
-        getAndCheckElementFromDataset(item, LeafJawPositions, "2-2n", "1", "BeamLimitingDeviceSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmCodeString(RTBeamLimitingDeviceType), "1", "1", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(SourceToBeamLimitingDeviceDistance), "1", "3", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmIntegerString(NumberOfLeafJawPairs), "1", "1", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(LeafPositionBoundaries), "3-n", "2C", "BeamLimitingDeviceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(LeafJawPositions), "2-2n", "1", "BeamLimitingDeviceSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafJawPositions(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(LeafJawPositions, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafJawPositions(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafJawPositions(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafJawPositions).getFloat64Vector(value);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafPositionBoundaries(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(LeafPositionBoundaries, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafPositionBoundaries(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getLeafPositionBoundaries(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, LeafPositionBoundaries).getFloat64Vector(value);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getNumberOfLeafJawPairs(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(NumberOfLeafJawPairs, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getNumberOfLeafJawPairs(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, NumberOfLeafJawPairs).getSint32(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getRTBeamLimitingDeviceType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(RTBeamLimitingDeviceType, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getSourceToBeamLimitingDeviceDistance(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(SourceToBeamLimitingDeviceDistance, value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::getSourceToBeamLimitingDeviceDistance(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, SourceToBeamLimitingDeviceDistance).getFloat64(value, pos);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setLeafJawPositions(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "2-2n") : EC_Normal;
-        if (result.good())
-            result = LeafJawPositions.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setLeafPositionBoundaries(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "3-n") : EC_Normal;
-        if (result.good())
-            result = LeafPositionBoundaries.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setNumberOfLeafJawPairs(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = NumberOfLeafJawPairs.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setRTBeamLimitingDeviceType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = RTBeamLimitingDeviceType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item::setSourceToBeamLimitingDeviceDistance(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = SourceToBeamLimitingDeviceDistance.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::DRTBeamLimitingDeviceSequenceInRTIonBeamsModule(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator=(const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::~DRTBeamLimitingDeviceSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::Item &DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                                  const OFString &card,
-                                                                  const OFString &type,
-                                                                  const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_BeamLimitingDeviceSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_BeamLimitingDeviceSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTBeamLimitingDeviceSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                                   const OFString &card,
-                                                                   const OFString &type,
-                                                                   const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BeamLimitingDeviceSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 766b92bde28a482ccb8b467167e4b60614a9d92d..a310e18a3a15859c433077f6fcf5ec1b6cda1f77 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -281,10 +281,12 @@ OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoFirstItem()
 OFCondition DRTBeamLimitingDeviceToleranceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 88856f97acb1ec47a1609b2502fff84dae71ef2d..f37e470756b6bb68eb74aff406f7460b690786b8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTBreedRegistryCodeSequence::gotoFirstItem()
 OFCondition DRTBreedRegistryCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 3c4882c6289109bb5389280c09715ed1f2381daa..fcf66cd8b4103e70760df705ccb0c238f771aae0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -290,10 +290,12 @@ OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTBrachyReferencedDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index c4e0e0a6252998d49f3e5454b87a737055dac944..b1e79a9f56a96ec8f75cbbb21085e7512cff6c10 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -250,10 +250,12 @@ OFCondition DRTBreedRegistrationSequence::gotoFirstItem()
 OFCondition DRTBreedRegistrationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index fbbdeb7fd469962f3517c4d55fc00f628031ef77..1d7069acaa4e74bf1cd4a5c5f622a5d225d01bcb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -30,13 +30,18 @@ DRTBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     BlockSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     CompensatorSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    DefinitionSourceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
+    EnhancedRTBeamLimitingDeviceDefinitionFlag(DCM_EnhancedRTBeamLimitingDeviceDefinitionFlag),
+    EnhancedRTBeamLimitingDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    EntityLongLabel(DCM_EntityLongLabel),
     FinalCumulativeMetersetWeight(DCM_FinalCumulativeMetersetWeight),
     GeneralAccessorySequence(emptyDefaultItem /*emptyDefaultSequence*/),
     HighDoseTechniqueType(DCM_HighDoseTechniqueType),
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionName(DCM_InstitutionName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     Manufacturer(DCM_Manufacturer),
     ManufacturerModelName(DCM_ManufacturerModelName),
     NumberOfBlocks(DCM_NumberOfBlocks),
@@ -75,13 +80,18 @@ DRTBeamSequence::Item::Item(const Item &copy)
     BlockSequence(copy.BlockSequence),
     CompensatorSequence(copy.CompensatorSequence),
     ControlPointSequence(copy.ControlPointSequence),
+    DefinitionSourceSequence(copy.DefinitionSourceSequence),
     DeviceSerialNumber(copy.DeviceSerialNumber),
+    EnhancedRTBeamLimitingDeviceDefinitionFlag(copy.EnhancedRTBeamLimitingDeviceDefinitionFlag),
+    EnhancedRTBeamLimitingDeviceSequence(copy.EnhancedRTBeamLimitingDeviceSequence),
+    EntityLongLabel(copy.EntityLongLabel),
     FinalCumulativeMetersetWeight(copy.FinalCumulativeMetersetWeight),
     GeneralAccessorySequence(copy.GeneralAccessorySequence),
     HighDoseTechniqueType(copy.HighDoseTechniqueType),
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionName(copy.InstitutionName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     Manufacturer(copy.Manufacturer),
     ManufacturerModelName(copy.ManufacturerModelName),
     NumberOfBlocks(copy.NumberOfBlocks),
@@ -128,13 +138,18 @@ DRTBeamSequence::Item &DRTBeamSequence::Item::operator=(const Item &copy)
         BlockSequence = copy.BlockSequence;
         CompensatorSequence = copy.CompensatorSequence;
         ControlPointSequence = copy.ControlPointSequence;
+        DefinitionSourceSequence = copy.DefinitionSourceSequence;
         DeviceSerialNumber = copy.DeviceSerialNumber;
+        EnhancedRTBeamLimitingDeviceDefinitionFlag = copy.EnhancedRTBeamLimitingDeviceDefinitionFlag;
+        EnhancedRTBeamLimitingDeviceSequence = copy.EnhancedRTBeamLimitingDeviceSequence;
+        EntityLongLabel = copy.EntityLongLabel;
         FinalCumulativeMetersetWeight = copy.FinalCumulativeMetersetWeight;
         GeneralAccessorySequence = copy.GeneralAccessorySequence;
         HighDoseTechniqueType = copy.HighDoseTechniqueType;
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionName = copy.InstitutionName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         Manufacturer = copy.Manufacturer;
         ManufacturerModelName = copy.ManufacturerModelName;
         NumberOfBlocks = copy.NumberOfBlocks;
@@ -170,7 +185,9 @@ void DRTBeamSequence::Item::clear()
         /* clear all DICOM attributes */
         BeamNumber.clear();
         BeamName.clear();
+        EntityLongLabel.clear();
         BeamDescription.clear();
+        DefinitionSourceSequence.clear();
         BeamType.clear();
         RadiationType.clear();
         PrimaryFluenceModeSequence.clear();
@@ -180,12 +197,15 @@ void DRTBeamSequence::Item::clear()
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
         ManufacturerModelName.clear();
         DeviceSerialNumber.clear();
         PrimaryDosimeterUnit.clear();
         ReferencedToleranceTableNumber.clear();
         SourceAxisDistance.clear();
+        EnhancedRTBeamLimitingDeviceDefinitionFlag.clear();
         BeamLimitingDeviceSequence.clear();
+        EnhancedRTBeamLimitingDeviceSequence.clear();
         ReferencedPatientSetupNumber.clear();
         ReferencedReferenceImageSequence.clear();
         PlannedVerificationImageSequence.clear();
@@ -215,7 +235,9 @@ OFBool DRTBeamSequence::Item::isEmpty()
 {
     return BeamNumber.isEmpty() &&
            BeamName.isEmpty() &&
+           EntityLongLabel.isEmpty() &&
            BeamDescription.isEmpty() &&
+           DefinitionSourceSequence.isEmpty() &&
            BeamType.isEmpty() &&
            RadiationType.isEmpty() &&
            PrimaryFluenceModeSequence.isEmpty() &&
@@ -225,12 +247,15 @@ OFBool DRTBeamSequence::Item::isEmpty()
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty() &&
            ManufacturerModelName.isEmpty() &&
            DeviceSerialNumber.isEmpty() &&
            PrimaryDosimeterUnit.isEmpty() &&
            ReferencedToleranceTableNumber.isEmpty() &&
            SourceAxisDistance.isEmpty() &&
+           EnhancedRTBeamLimitingDeviceDefinitionFlag.isEmpty() &&
            BeamLimitingDeviceSequence.isEmpty() &&
+           EnhancedRTBeamLimitingDeviceSequence.isEmpty() &&
            ReferencedPatientSetupNumber.isEmpty() &&
            ReferencedReferenceImageSequence.isEmpty() &&
            PlannedVerificationImageSequence.isEmpty() &&
@@ -270,7 +295,9 @@ OFCondition DRTBeamSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, BeamNumber, "1", "1", "BeamSequence");
         getAndCheckElementFromDataset(item, BeamName, "1", "3", "BeamSequence");
+        getAndCheckElementFromDataset(item, EntityLongLabel, "1", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, BeamDescription, "1", "3", "BeamSequence");
+        DefinitionSourceSequence.read(item, "1-n", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, BeamType, "1", "1", "BeamSequence");
         getAndCheckElementFromDataset(item, RadiationType, "1", "2", "BeamSequence");
         PrimaryFluenceModeSequence.read(item, "1-n", "3", "BeamSequence");
@@ -280,12 +307,15 @@ OFCondition DRTBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "BeamSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, PrimaryDosimeterUnit, "1", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, ReferencedToleranceTableNumber, "1", "3", "BeamSequence");
         getAndCheckElementFromDataset(item, SourceAxisDistance, "1", "3", "BeamSequence");
-        BeamLimitingDeviceSequence.read(item, "1-n", "1", "BeamSequence");
+        getAndCheckElementFromDataset(item, EnhancedRTBeamLimitingDeviceDefinitionFlag, "1", "3", "BeamSequence");
+        BeamLimitingDeviceSequence.read(item, "1-n", "1C", "BeamSequence");
+        EnhancedRTBeamLimitingDeviceSequence.read(item, "1-n", "1C", "BeamSequence");
         getAndCheckElementFromDataset(item, ReferencedPatientSetupNumber, "1", "3", "BeamSequence");
         ReferencedReferenceImageSequence.read(item, "1-n", "3", "BeamSequence");
         PlannedVerificationImageSequence.read(item, "1-n", "3", "BeamSequence");
@@ -321,7 +351,9 @@ OFCondition DRTBeamSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(BeamNumber), "1", "1", "BeamSequence");
         addElementToDataset(result, item, new DcmLongString(BeamName), "1", "3", "BeamSequence");
+        addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmShortText(BeamDescription), "1", "3", "BeamSequence");
+        if (result.good()) result = DefinitionSourceSequence.write(item, "1-n", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmCodeString(BeamType), "1", "1", "BeamSequence");
         addElementToDataset(result, item, new DcmCodeString(RadiationType), "1", "2", "BeamSequence");
         if (result.good()) result = PrimaryFluenceModeSequence.write(item, "1-n", "3", "BeamSequence");
@@ -331,12 +363,15 @@ OFCondition DRTBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "BeamSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmCodeString(PrimaryDosimeterUnit), "1", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedToleranceTableNumber), "1", "3", "BeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceAxisDistance), "1", "3", "BeamSequence");
-        if (result.good()) result = BeamLimitingDeviceSequence.write(item, "1-n", "1", "BeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(EnhancedRTBeamLimitingDeviceDefinitionFlag), "1", "3", "BeamSequence");
+        if (result.good()) result = BeamLimitingDeviceSequence.write(item, "1-n", "1C", "BeamSequence");
+        if (result.good()) result = EnhancedRTBeamLimitingDeviceSequence.write(item, "1-n", "1C", "BeamSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedPatientSetupNumber), "1", "3", "BeamSequence");
         if (result.good()) result = ReferencedReferenceImageSequence.write(item, "1-n", "3", "BeamSequence");
         if (result.good()) result = PlannedVerificationImageSequence.write(item, "1-n", "3", "BeamSequence");
@@ -417,6 +452,24 @@ OFCondition DRTBeamSequence::Item::getDeviceSerialNumber(OFString &value, const
 }
 
 
+OFCondition DRTBeamSequence::Item::getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(EnhancedRTBeamLimitingDeviceDefinitionFlag, value, pos);
+}
+
+
+OFCondition DRTBeamSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(EntityLongLabel, value, pos);
+}
+
+
 OFCondition DRTBeamSequence::Item::getFinalCumulativeMetersetWeight(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -770,6 +823,32 @@ OFCondition DRTBeamSequence::Item::setDeviceSerialNumber(const OFString &value,
 }
 
 
+OFCondition DRTBeamSequence::Item::setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = EnhancedRTBeamLimitingDeviceDefinitionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTBeamSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = EntityLongLabel.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTBeamSequence::Item::setFinalCumulativeMetersetWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1167,10 +1246,12 @@ OFCondition DRTBeamSequence::gotoFirstItem()
 OFCondition DRTBeamSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 935c88b551f91a8460fe1d73bff515f9e102fbef..ac124b1af5813c379090a232c183b22eeedd262e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSlabSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -306,10 +306,12 @@ OFCondition DRTBlockSlabSequence::gotoFirstItem()
 OFCondition DRTBlockSlabSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 1a5281f2db6f297248f7131dc753d8b224c756db..a1e3d1378c95dd9e1af8f9bb1c261adf226a23ce 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const OFBool emptyDefaul
     BeamDosePointDepth(DCM_BeamDosePointDepth),
     BeamDosePointEquivalentDepth(DCM_BeamDosePointEquivalentDepth),
     BeamDosePointSSD(DCM_BeamDosePointSSD),
+    BeamDosePointSourceToExternalContourDistance(DCM_BeamDosePointSourceToExternalContourDistance),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     ReferencedControlPointIndex(DCM_ReferencedControlPointIndex)
 {
@@ -35,6 +36,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const Item &copy)
     BeamDosePointDepth(copy.BeamDosePointDepth),
     BeamDosePointEquivalentDepth(copy.BeamDosePointEquivalentDepth),
     BeamDosePointSSD(copy.BeamDosePointSSD),
+    BeamDosePointSourceToExternalContourDistance(copy.BeamDosePointSourceToExternalContourDistance),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     ReferencedControlPointIndex(copy.ReferencedControlPointIndex)
 {
@@ -54,6 +56,7 @@ DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationContro
         BeamDosePointDepth = copy.BeamDosePointDepth;
         BeamDosePointEquivalentDepth = copy.BeamDosePointEquivalentDepth;
         BeamDosePointSSD = copy.BeamDosePointSSD;
+        BeamDosePointSourceToExternalContourDistance = copy.BeamDosePointSourceToExternalContourDistance;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         ReferencedControlPointIndex = copy.ReferencedControlPointIndex;
     }
@@ -71,6 +74,7 @@ void DRTBeamDoseVerificationControlPointSequence::Item::clear()
         BeamDosePointDepth.clear();
         BeamDosePointEquivalentDepth.clear();
         BeamDosePointSSD.clear();
+        BeamDosePointSourceToExternalContourDistance.clear();
     }
 }
 
@@ -81,7 +85,8 @@ OFBool DRTBeamDoseVerificationControlPointSequence::Item::isEmpty()
            ReferencedControlPointIndex.isEmpty() &&
            BeamDosePointDepth.isEmpty() &&
            BeamDosePointEquivalentDepth.isEmpty() &&
-           BeamDosePointSSD.isEmpty();
+           BeamDosePointSSD.isEmpty() &&
+           BeamDosePointSourceToExternalContourDistance.isEmpty();
 }
 
 
@@ -103,6 +108,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::read(DcmItem &ite
         getAndCheckElementFromDataset(item, BeamDosePointDepth, "1", "1C", "BeamDoseVerificationControlPointSequence");
         getAndCheckElementFromDataset(item, BeamDosePointEquivalentDepth, "1", "1C", "BeamDoseVerificationControlPointSequence");
         getAndCheckElementFromDataset(item, BeamDosePointSSD, "1", "1C", "BeamDoseVerificationControlPointSequence");
+        getAndCheckElementFromDataset(item, BeamDosePointSourceToExternalContourDistance, "1", "3", "BeamDoseVerificationControlPointSequence");
         result = EC_Normal;
     }
     return result;
@@ -120,6 +126,7 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::write(DcmItem &it
         addElementToDataset(result, item, new DcmFloatingPointSingle(BeamDosePointDepth), "1", "1C", "BeamDoseVerificationControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(BeamDosePointEquivalentDepth), "1", "1C", "BeamDoseVerificationControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(BeamDosePointSSD), "1", "1C", "BeamDoseVerificationControlPointSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BeamDosePointSourceToExternalContourDistance), "1", "3", "BeamDoseVerificationControlPointSequence");
     }
     return result;
 }
@@ -152,6 +159,24 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getBeamDosePointS
 }
 
 
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getBeamDosePointSourceToExternalContourDistance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamDosePointSourceToExternalContourDistance, value, pos);
+}
+
+
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getBeamDosePointSourceToExternalContourDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BeamDosePointSourceToExternalContourDistance).getFloat64(value, pos);
+}
+
+
 OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getCumulativeMetersetWeight(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -215,6 +240,19 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setBeamDosePointS
 }
 
 
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setBeamDosePointSourceToExternalContourDistance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamDosePointSourceToExternalContourDistance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setCumulativeMetersetWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -365,10 +403,12 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::gotoFirstItem()
 OFCondition DRTBeamDoseVerificationControlPointSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index bf3f4b9c2e63758c8c2c6d005d0e106c34f7b7a3..e7e25d77662f7480c68759a475dbb70b3371d36b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -663,10 +663,12 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::gotoFirstItem()
 OFCondition DRTContrastBolusAdministrationRouteSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index a5bd570f12079cb34a2ebe44bba7ba328c233f7d..6f0afb7bdb0b7ee80ae6f7983fd16627471481d4 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTConceptCodeSequence::gotoFirstItem()
 OFCondition DRTConceptCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5d631bd14ca3df3a4fe7a90c3de3d5a2bff839d8..efef29013241ac279a0046ad629eea0ed6d8367e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -301,10 +301,12 @@ OFCondition DRTConsentForClinicalTrialUseSequence::gotoFirstItem()
 OFCondition DRTConsentForClinicalTrialUseSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 16a47a53675722861cb723ced9b8b6a37a5fa91d..63ee4d8b3cca7979c77e96893575950d7f18eca7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -357,10 +357,12 @@ OFCondition DRTCalculatedDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTCalculatedDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 35b976d04801f2d6f31027a69662b860a025b75a..87a62e74eb3d4a1af4e92bda4e5254df3a054f06 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -25,9 +25,11 @@ DRTContributingEquipmentSequence::Item::Item(const OFBool emptyDefaultItem)
     ContributionDescription(DCM_ContributionDescription),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
+    DeviceUID(DCM_DeviceUID),
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionName(DCM_InstitutionName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     Manufacturer(DCM_Manufacturer),
     ManufacturerModelName(DCM_ManufacturerModelName),
     OperatorIdentificationSequence(emptyDefaultItem /*emptyDefaultSequence*/),
@@ -36,7 +38,8 @@ DRTContributingEquipmentSequence::Item::Item(const OFBool emptyDefaultItem)
     SoftwareVersions(DCM_SoftwareVersions),
     SpatialResolution(DCM_SpatialResolution),
     StationName(DCM_StationName),
-    TimeOfLastCalibration(DCM_TimeOfLastCalibration)
+    TimeOfLastCalibration(DCM_TimeOfLastCalibration),
+    UDISequence(emptyDefaultItem /*emptyDefaultSequence*/)
 {
 }
 
@@ -47,9 +50,11 @@ DRTContributingEquipmentSequence::Item::Item(const Item &copy)
     ContributionDescription(copy.ContributionDescription),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     DeviceSerialNumber(copy.DeviceSerialNumber),
+    DeviceUID(copy.DeviceUID),
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionName(copy.InstitutionName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     Manufacturer(copy.Manufacturer),
     ManufacturerModelName(copy.ManufacturerModelName),
     OperatorIdentificationSequence(copy.OperatorIdentificationSequence),
@@ -58,7 +63,8 @@ DRTContributingEquipmentSequence::Item::Item(const Item &copy)
     SoftwareVersions(copy.SoftwareVersions),
     SpatialResolution(copy.SpatialResolution),
     StationName(copy.StationName),
-    TimeOfLastCalibration(copy.TimeOfLastCalibration)
+    TimeOfLastCalibration(copy.TimeOfLastCalibration),
+    UDISequence(copy.UDISequence)
 {
 }
 
@@ -77,9 +83,11 @@ DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::Item::
         ContributionDescription = copy.ContributionDescription;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         DeviceSerialNumber = copy.DeviceSerialNumber;
+        DeviceUID = copy.DeviceUID;
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionName = copy.InstitutionName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         Manufacturer = copy.Manufacturer;
         ManufacturerModelName = copy.ManufacturerModelName;
         OperatorIdentificationSequence = copy.OperatorIdentificationSequence;
@@ -89,6 +97,7 @@ DRTContributingEquipmentSequence::Item &DRTContributingEquipmentSequence::Item::
         SpatialResolution = copy.SpatialResolution;
         StationName = copy.StationName;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
+        UDISequence = copy.UDISequence;
     }
     return *this;
 }
@@ -105,11 +114,14 @@ void DRTContributingEquipmentSequence::Item::clear()
         InstitutionAddress.clear();
         StationName.clear();
         InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
         OperatorsName.clear();
         OperatorIdentificationSequence.clear();
         ManufacturerModelName.clear();
         DeviceSerialNumber.clear();
         SoftwareVersions.clear();
+        DeviceUID.clear();
+        UDISequence.clear();
         SpatialResolution.clear();
         DateOfLastCalibration.clear();
         TimeOfLastCalibration.clear();
@@ -127,11 +139,14 @@ OFBool DRTContributingEquipmentSequence::Item::isEmpty()
            InstitutionAddress.isEmpty() &&
            StationName.isEmpty() &&
            InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty() &&
            OperatorsName.isEmpty() &&
            OperatorIdentificationSequence.isEmpty() &&
            ManufacturerModelName.isEmpty() &&
            DeviceSerialNumber.isEmpty() &&
            SoftwareVersions.isEmpty() &&
+           DeviceUID.isEmpty() &&
+           UDISequence.isEmpty() &&
            SpatialResolution.isEmpty() &&
            DateOfLastCalibration.isEmpty() &&
            TimeOfLastCalibration.isEmpty() &&
@@ -159,11 +174,14 @@ OFCondition DRTContributingEquipmentSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, StationName, "1", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "ContributingEquipmentSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, OperatorsName, "1-n", "3", "ContributingEquipmentSequence");
         OperatorIdentificationSequence.read(item, "1-n", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, SoftwareVersions, "1-n", "3", "ContributingEquipmentSequence");
+        getAndCheckElementFromDataset(item, DeviceUID, "1", "3", "ContributingEquipmentSequence");
+        UDISequence.read(item, "1-n", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, SpatialResolution, "1", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, DateOfLastCalibration, "1-n", "3", "ContributingEquipmentSequence");
         getAndCheckElementFromDataset(item, TimeOfLastCalibration, "1-n", "3", "ContributingEquipmentSequence");
@@ -187,11 +205,14 @@ OFCondition DRTContributingEquipmentSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmShortString(StationName), "1", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "ContributingEquipmentSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmPersonName(OperatorsName), "1-n", "3", "ContributingEquipmentSequence");
         if (result.good()) result = OperatorIdentificationSequence.write(item, "1-n", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmLongString(SoftwareVersions), "1-n", "3", "ContributingEquipmentSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(DeviceUID), "1", "3", "ContributingEquipmentSequence");
+        if (result.good()) result = UDISequence.write(item, "1-n", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmDecimalString(SpatialResolution), "1", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmDate(DateOfLastCalibration), "1-n", "3", "ContributingEquipmentSequence");
         addElementToDataset(result, item, new DcmTime(TimeOfLastCalibration), "1-n", "3", "ContributingEquipmentSequence");
@@ -238,6 +259,15 @@ OFCondition DRTContributingEquipmentSequence::Item::getDeviceSerialNumber(OFStri
 }
 
 
+OFCondition DRTContributingEquipmentSequence::Item::getDeviceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTContributingEquipmentSequence::Item::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -389,6 +419,19 @@ OFCondition DRTContributingEquipmentSequence::Item::setDeviceSerialNumber(const
 }
 
 
+OFCondition DRTContributingEquipmentSequence::Item::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeviceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContributingEquipmentSequence::Item::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -643,10 +686,12 @@ OFCondition DRTContributingEquipmentSequence::gotoFirstItem()
 OFCondition DRTContributingEquipmentSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 74c6749e618774b004bc1c40893c0f959600181d..4ed204cd355ebcf1c242914fa8e55b329cd1a9b5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContextGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -330,10 +330,12 @@ OFCondition DRTContextGroupIdentificationSequence::gotoFirstItem()
 OFCondition DRTContextGroupIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 004ae08195870ab32724e9f07417aed05343a220..4ac9aadbc77a4e4cae4a05fc7d1abaae58e32142 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@
 DRTChannelSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     AfterloaderChannelID(DCM_AfterloaderChannelID),
+    ApplicatorShapeReferencedROINumber(DCM_ApplicatorShapeReferencedROINumber),
     BrachyControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ChannelEffectiveLength(DCM_ChannelEffectiveLength),
     ChannelInnerLength(DCM_ChannelInnerLength),
@@ -56,6 +57,7 @@ DRTChannelSequence::Item::Item(const OFBool emptyDefaultItem)
 DRTChannelSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     AfterloaderChannelID(copy.AfterloaderChannelID),
+    ApplicatorShapeReferencedROINumber(copy.ApplicatorShapeReferencedROINumber),
     BrachyControlPointSequence(copy.BrachyControlPointSequence),
     ChannelEffectiveLength(copy.ChannelEffectiveLength),
     ChannelInnerLength(copy.ChannelInnerLength),
@@ -98,6 +100,7 @@ DRTChannelSequence::Item &DRTChannelSequence::Item::operator=(const Item &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
         AfterloaderChannelID = copy.AfterloaderChannelID;
+        ApplicatorShapeReferencedROINumber = copy.ApplicatorShapeReferencedROINumber;
         BrachyControlPointSequence = copy.BrachyControlPointSequence;
         ChannelEffectiveLength = copy.ChannelEffectiveLength;
         ChannelInnerLength = copy.ChannelInnerLength;
@@ -152,6 +155,7 @@ void DRTChannelSequence::Item::clear()
         SourceApplicatorWallNominalThickness.clear();
         SourceApplicatorWallNominalTransmission.clear();
         SourceApplicatorStepSize.clear();
+        ApplicatorShapeReferencedROINumber.clear();
         ReferencedROINumber.clear();
         TransferTubeNumber.clear();
         TransferTubeLength.clear();
@@ -186,6 +190,7 @@ OFBool DRTChannelSequence::Item::isEmpty()
            SourceApplicatorWallNominalThickness.isEmpty() &&
            SourceApplicatorWallNominalTransmission.isEmpty() &&
            SourceApplicatorStepSize.isEmpty() &&
+           ApplicatorShapeReferencedROINumber.isEmpty() &&
            ReferencedROINumber.isEmpty() &&
            TransferTubeNumber.isEmpty() &&
            TransferTubeLength.isEmpty() &&
@@ -230,6 +235,7 @@ OFCondition DRTChannelSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, SourceApplicatorWallNominalThickness, "1", "3", "ChannelSequence");
         getAndCheckElementFromDataset(item, SourceApplicatorWallNominalTransmission, "1", "3", "ChannelSequence");
         getAndCheckElementFromDataset(item, SourceApplicatorStepSize, "1", "1C", "ChannelSequence");
+        getAndCheckElementFromDataset(item, ApplicatorShapeReferencedROINumber, "1", "3", "ChannelSequence");
         getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "2C", "ChannelSequence");
         getAndCheckElementFromDataset(item, TransferTubeNumber, "1", "2", "ChannelSequence");
         getAndCheckElementFromDataset(item, TransferTubeLength, "1", "2C", "ChannelSequence");
@@ -270,6 +276,7 @@ OFCondition DRTChannelSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(SourceApplicatorWallNominalThickness), "1", "3", "ChannelSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceApplicatorWallNominalTransmission), "1", "3", "ChannelSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceApplicatorStepSize), "1", "1C", "ChannelSequence");
+        addElementToDataset(result, item, new DcmIntegerString(ApplicatorShapeReferencedROINumber), "1", "3", "ChannelSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "2C", "ChannelSequence");
         addElementToDataset(result, item, new DcmIntegerString(TransferTubeNumber), "1", "2", "ChannelSequence");
         addElementToDataset(result, item, new DcmDecimalString(TransferTubeLength), "1", "2C", "ChannelSequence");
@@ -295,6 +302,24 @@ OFCondition DRTChannelSequence::Item::getAfterloaderChannelID(OFString &value, c
 }
 
 
+OFCondition DRTChannelSequence::Item::getApplicatorShapeReferencedROINumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ApplicatorShapeReferencedROINumber, value, pos);
+}
+
+
+OFCondition DRTChannelSequence::Item::getApplicatorShapeReferencedROINumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ApplicatorShapeReferencedROINumber).getSint32(value, pos);
+}
+
+
 OFCondition DRTChannelSequence::Item::getChannelEffectiveLength(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -704,6 +729,19 @@ OFCondition DRTChannelSequence::Item::setAfterloaderChannelID(const OFString &va
 }
 
 
+OFCondition DRTChannelSequence::Item::setApplicatorShapeReferencedROINumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ApplicatorShapeReferencedROINumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTChannelSequence::Item::setChannelEffectiveLength(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1153,10 +1191,12 @@ OFCondition DRTChannelSequence::gotoFirstItem()
 OFCondition DRTChannelSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 6cc3c2e09eab03fd48700069fbc438c97cd886a6..c42d80cfedf30b3d3938fc4d01d5a2d5745c8531 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -29,6 +29,7 @@ DRTContentItemModifierSequence::Item::Item(const OFBool emptyDefaultItem)
     MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     NumericValue(DCM_NumericValue),
     ObservationDateTime(DCM_ObservationDateTime),
+    ObservationStartDateTime(DCM_ObservationStartDateTime),
     PersonName(DCM_PersonName),
     RationalDenominatorValue(DCM_RationalDenominatorValue),
     RationalNumeratorValue(DCM_RationalNumeratorValue),
@@ -51,6 +52,7 @@ DRTContentItemModifierSequence::Item::Item(const Item &copy)
     MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
     NumericValue(copy.NumericValue),
     ObservationDateTime(copy.ObservationDateTime),
+    ObservationStartDateTime(copy.ObservationStartDateTime),
     PersonName(copy.PersonName),
     RationalDenominatorValue(copy.RationalDenominatorValue),
     RationalNumeratorValue(copy.RationalNumeratorValue),
@@ -81,6 +83,7 @@ DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::Item::oper
         MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
         NumericValue = copy.NumericValue;
         ObservationDateTime = copy.ObservationDateTime;
+        ObservationStartDateTime = copy.ObservationStartDateTime;
         PersonName = copy.PersonName;
         RationalDenominatorValue = copy.RationalDenominatorValue;
         RationalNumeratorValue = copy.RationalNumeratorValue;
@@ -101,6 +104,7 @@ void DRTContentItemModifierSequence::Item::clear()
         /* clear all DICOM attributes */
         ValueType.clear();
         ObservationDateTime.clear();
+        ObservationStartDateTime.clear();
         ConceptNameCodeSequence.clear();
         DateTime.clear();
         Date.clear();
@@ -123,6 +127,7 @@ OFBool DRTContentItemModifierSequence::Item::isEmpty()
 {
     return ValueType.isEmpty() &&
            ObservationDateTime.isEmpty() &&
+           ObservationStartDateTime.isEmpty() &&
            ConceptNameCodeSequence.isEmpty() &&
            DateTime.isEmpty() &&
            Date.isEmpty() &&
@@ -155,6 +160,7 @@ OFCondition DRTContentItemModifierSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, ValueType, "1", "1", "ContentItemModifierSequence");
         getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "ContentItemModifierSequence");
+        getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "ContentItemModifierSequence");
         ConceptNameCodeSequence.read(item, "1-n", "1", "ContentItemModifierSequence");
         getAndCheckElementFromDataset(item, DateTime, "1", "1C", "ContentItemModifierSequence");
         getAndCheckElementFromDataset(item, Date, "1", "1C", "ContentItemModifierSequence");
@@ -183,6 +189,7 @@ OFCondition DRTContentItemModifierSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "ContentItemModifierSequence");
         addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "ContentItemModifierSequence");
+        addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "ContentItemModifierSequence");
         if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "ContentItemModifierSequence");
         addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "ContentItemModifierSequence");
         addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "ContentItemModifierSequence");
@@ -265,6 +272,15 @@ OFCondition DRTContentItemModifierSequence::Item::getObservationDateTime(OFStrin
 }
 
 
+OFCondition DRTContentItemModifierSequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ObservationStartDateTime, value, pos);
+}
+
+
 OFCondition DRTContentItemModifierSequence::Item::getPersonName(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -389,6 +405,19 @@ OFCondition DRTContentItemModifierSequence::Item::setObservationDateTime(const O
 }
 
 
+OFCondition DRTContentItemModifierSequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ObservationStartDateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContentItemModifierSequence::Item::setPersonName(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -596,10 +625,12 @@ OFCondition DRTContentItemModifierSequence::gotoFirstItem()
 OFCondition DRTContentItemModifierSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 79ac761d683658037f50d041788562cc45be511d..06709364dedfaa469106523455d1b05b567ed365 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -335,10 +335,12 @@ OFCondition DRTContourImageSequence::gotoFirstItem()
 OFCondition DRTContourImageSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 49d891960828f7d161e43af758170cf394721b4c..ababe0f95328244a6553cec9dd95333a7cf59ce5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTConceptNameCodeSequence::gotoFirstItem()
 OFCondition DRTConceptNameCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 9f7626e5ff1345a2c02ed04c5e470b774e8ce769..0240f6b4846096638fb4b56acbeb1c9e83f8e622 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -862,10 +862,12 @@ OFCondition DRTCompensatorSequence::gotoFirstItem()
 OFCondition DRTCompensatorSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 16fd2edf6ea6ce9066958c64889adc24d2fc37cb..bd02a346be4d7d439846b1bc13346ed295bd2b2f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -335,10 +335,12 @@ OFCondition DRTCorrectedParameterSequence::gotoFirstItem()
 OFCondition DRTCorrectedParameterSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 67fcb6cd5cde2b6a8ef1b04f9a097f33a8e62f64..99507485f4f84118fe23a2663aba17267db3bb5b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConsultingPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,8 @@ DRTConsultingPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefau
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InstitutionName(DCM_InstitutionName),
+    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonTelecomInformation(DCM_PersonTelecomInformation),
@@ -37,6 +39,8 @@ DRTConsultingPhysicianIdentificationSequence::Item::Item(const Item &copy)
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionCodeSequence(copy.InstitutionCodeSequence),
     InstitutionName(copy.InstitutionName),
+    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
     PersonTelecomInformation(copy.PersonTelecomInformation),
@@ -58,6 +62,8 @@ DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdenti
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionCodeSequence = copy.InstitutionCodeSequence;
         InstitutionName = copy.InstitutionName;
+        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
         PersonTelecomInformation = copy.PersonTelecomInformation;
@@ -79,6 +85,8 @@ void DRTConsultingPhysicianIdentificationSequence::Item::clear()
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
+        InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
     }
 }
 
@@ -91,7 +99,9 @@ OFBool DRTConsultingPhysicianIdentificationSequence::Item::isEmpty()
            PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
-           InstitutionCodeSequence.isEmpty();
+           InstitutionCodeSequence.isEmpty() &&
+           InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty();
 }
 
 
@@ -115,6 +125,8 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::read(DcmItem &it
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ConsultingPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ConsultingPhysicianIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "ConsultingPhysicianIdentificationSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "ConsultingPhysicianIdentificationSequence");
         result = EC_Normal;
     }
     return result;
@@ -134,6 +146,8 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::write(DcmItem &i
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ConsultingPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ConsultingPhysicianIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "ConsultingPhysicianIdentificationSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "ConsultingPhysicianIdentificationSequence");
     }
     return result;
 }
@@ -157,6 +171,15 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionNa
 }
 
 
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
+}
+
+
 OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -210,6 +233,19 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionNa
 }
 
 
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionalDepartmentName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -373,10 +409,12 @@ OFCondition DRTConsultingPhysicianIdentificationSequence::gotoFirstItem()
 OFCondition DRTConsultingPhysicianIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 4110535a57a70ed3b63600d01f2e7d9c1bb5c4db..4bc1a9d6f89727a58b2caab0882e0cdd94dffebb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -27,6 +27,7 @@ DRTControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     ControlPointIndex(DCM_ControlPointIndex),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     DoseRateSet(DCM_DoseRateSet),
+    EnhancedRTBeamLimitingOpeningSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ExternalContourEntryPoint(DCM_ExternalContourEntryPoint),
     GantryAngle(DCM_GantryAngle),
     GantryPitchAngle(DCM_GantryPitchAngle),
@@ -64,6 +65,7 @@ DRTControlPointSequence::Item::Item(const Item &copy)
     ControlPointIndex(copy.ControlPointIndex),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     DoseRateSet(copy.DoseRateSet),
+    EnhancedRTBeamLimitingOpeningSequence(copy.EnhancedRTBeamLimitingOpeningSequence),
     ExternalContourEntryPoint(copy.ExternalContourEntryPoint),
     GantryAngle(copy.GantryAngle),
     GantryPitchAngle(copy.GantryPitchAngle),
@@ -109,6 +111,7 @@ DRTControlPointSequence::Item &DRTControlPointSequence::Item::operator=(const It
         ControlPointIndex = copy.ControlPointIndex;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         DoseRateSet = copy.DoseRateSet;
+        EnhancedRTBeamLimitingOpeningSequence = copy.EnhancedRTBeamLimitingOpeningSequence;
         ExternalContourEntryPoint = copy.ExternalContourEntryPoint;
         GantryAngle = copy.GantryAngle;
         GantryPitchAngle = copy.GantryPitchAngle;
@@ -152,6 +155,7 @@ void DRTControlPointSequence::Item::clear()
         DoseRateSet.clear();
         WedgePositionSequence.clear();
         BeamLimitingDevicePositionSequence.clear();
+        EnhancedRTBeamLimitingOpeningSequence.clear();
         GantryAngle.clear();
         GantryRotationDirection.clear();
         GantryPitchAngle.clear();
@@ -189,6 +193,7 @@ OFBool DRTControlPointSequence::Item::isEmpty()
            DoseRateSet.isEmpty() &&
            WedgePositionSequence.isEmpty() &&
            BeamLimitingDevicePositionSequence.isEmpty() &&
+           EnhancedRTBeamLimitingOpeningSequence.isEmpty() &&
            GantryAngle.isEmpty() &&
            GantryRotationDirection.isEmpty() &&
            GantryPitchAngle.isEmpty() &&
@@ -236,6 +241,7 @@ OFCondition DRTControlPointSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, DoseRateSet, "1", "3", "ControlPointSequence");
         WedgePositionSequence.read(item, "1-n", "1C", "ControlPointSequence");
         BeamLimitingDevicePositionSequence.read(item, "1-n", "1C", "ControlPointSequence");
+        EnhancedRTBeamLimitingOpeningSequence.read(item, "1-n", "2C", "ControlPointSequence");
         getAndCheckElementFromDataset(item, GantryAngle, "1", "1C", "ControlPointSequence");
         getAndCheckElementFromDataset(item, GantryRotationDirection, "1", "1C", "ControlPointSequence");
         getAndCheckElementFromDataset(item, GantryPitchAngle, "1", "3", "ControlPointSequence");
@@ -279,6 +285,7 @@ OFCondition DRTControlPointSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(DoseRateSet), "1", "3", "ControlPointSequence");
         if (result.good()) result = WedgePositionSequence.write(item, "1-n", "1C", "ControlPointSequence");
         if (result.good()) result = BeamLimitingDevicePositionSequence.write(item, "1-n", "1C", "ControlPointSequence");
+        if (result.good()) result = EnhancedRTBeamLimitingOpeningSequence.write(item, "1-n", "2C", "ControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(GantryAngle), "1", "1C", "ControlPointSequence");
         addElementToDataset(result, item, new DcmCodeString(GantryRotationDirection), "1", "1C", "ControlPointSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(GantryPitchAngle), "1", "3", "ControlPointSequence");
@@ -1158,10 +1165,12 @@ OFCondition DRTControlPointSequence::gotoFirstItem()
 OFCondition DRTControlPointSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index b7c6020540203ebc0d33c3d3333cc9ddb841cb65..6ed20cd9dc4312df37ff6725a09faae7e62147ea 100644 (file)
@@ -1,14 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2021, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *  Last modified on 2021-02-01 by Riesmeier
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 DRTContourSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    AttachedContours(DCM_RETIRED_AttachedContours),
     ContourData(DCM_ContourData),
     ContourGeometricType(DCM_ContourGeometricType),
     ContourImageSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ContourNumber(DCM_ContourNumber),
-    ContourOffsetVector(DCM_RETIRED_ContourOffsetVector),
-    ContourSlabThickness(DCM_RETIRED_ContourSlabThickness),
     NumberOfContourPoints(DCM_NumberOfContourPoints)
 {
 }
@@ -36,13 +32,10 @@ DRTContourSequence::Item::Item(const OFBool emptyDefaultItem)
 
 DRTContourSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AttachedContours(copy.AttachedContours),
     ContourData(copy.ContourData),
     ContourGeometricType(copy.ContourGeometricType),
     ContourImageSequence(copy.ContourImageSequence),
     ContourNumber(copy.ContourNumber),
-    ContourOffsetVector(copy.ContourOffsetVector),
-    ContourSlabThickness(copy.ContourSlabThickness),
     NumberOfContourPoints(copy.NumberOfContourPoints)
 {
 }
@@ -58,13 +51,10 @@ DRTContourSequence::Item &DRTContourSequence::Item::operator=(const Item &copy)
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        AttachedContours = copy.AttachedContours;
         ContourData = copy.ContourData;
         ContourGeometricType = copy.ContourGeometricType;
         ContourImageSequence = copy.ContourImageSequence;
         ContourNumber = copy.ContourNumber;
-        ContourOffsetVector = copy.ContourOffsetVector;
-        ContourSlabThickness = copy.ContourSlabThickness;
         NumberOfContourPoints = copy.NumberOfContourPoints;
     }
     return *this;
@@ -77,11 +67,8 @@ void DRTContourSequence::Item::clear()
     {
         /* clear all DICOM attributes */
         ContourNumber.clear();
-        AttachedContours.clear();
         ContourImageSequence.clear();
         ContourGeometricType.clear();
-        ContourSlabThickness.clear();
-        ContourOffsetVector.clear();
         NumberOfContourPoints.clear();
         ContourData.clear();
     }
@@ -91,11 +78,8 @@ void DRTContourSequence::Item::clear()
 OFBool DRTContourSequence::Item::isEmpty()
 {
     return ContourNumber.isEmpty() &&
-           AttachedContours.isEmpty() &&
            ContourImageSequence.isEmpty() &&
            ContourGeometricType.isEmpty() &&
-           ContourSlabThickness.isEmpty() &&
-           ContourOffsetVector.isEmpty() &&
            NumberOfContourPoints.isEmpty() &&
            ContourData.isEmpty();
 }
@@ -115,11 +99,8 @@ OFCondition DRTContourSequence::Item::read(DcmItem &item)
         /* re-initialize object */
         clear();
         getAndCheckElementFromDataset(item, ContourNumber, "1", "3", "ContourSequence");
-        getAndCheckElementFromDataset(item, AttachedContours, "1-n", "3", "ContourSequence");
         ContourImageSequence.read(item, "1-n", "3", "ContourSequence");
         getAndCheckElementFromDataset(item, ContourGeometricType, "1", "1", "ContourSequence");
-        getAndCheckElementFromDataset(item, ContourSlabThickness, "1", "3", "ContourSequence");
-        getAndCheckElementFromDataset(item, ContourOffsetVector, "3", "3", "ContourSequence");
         getAndCheckElementFromDataset(item, NumberOfContourPoints, "1", "1", "ContourSequence");
         getAndCheckElementFromDataset(item, ContourData, "3-3n", "1", "ContourSequence");
         result = EC_Normal;
@@ -135,11 +116,8 @@ OFCondition DRTContourSequence::Item::write(DcmItem &item)
     {
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ContourNumber), "1", "3", "ContourSequence");
-        addElementToDataset(result, item, new DcmIntegerString(AttachedContours), "1-n", "3", "ContourSequence");
         if (result.good()) result = ContourImageSequence.write(item, "1-n", "3", "ContourSequence");
         addElementToDataset(result, item, new DcmCodeString(ContourGeometricType), "1", "1", "ContourSequence");
-        addElementToDataset(result, item, new DcmDecimalString(ContourSlabThickness), "1", "3", "ContourSequence");
-        addElementToDataset(result, item, new DcmDecimalString(ContourOffsetVector), "3", "3", "ContourSequence");
         addElementToDataset(result, item, new DcmIntegerString(NumberOfContourPoints), "1", "1", "ContourSequence");
         addElementToDataset(result, item, new DcmDecimalString(ContourData), "3-3n", "1", "ContourSequence");
     }
@@ -147,24 +125,6 @@ OFCondition DRTContourSequence::Item::write(DcmItem &item)
 }
 
 
-OFCondition DRTContourSequence::Item::getAttachedContours(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AttachedContours, value, pos);
-}
-
-
-OFCondition DRTContourSequence::Item::getAttachedContours(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, AttachedContours).getSint32(value, pos);
-}
-
-
 OFCondition DRTContourSequence::Item::getContourData(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -219,51 +179,6 @@ OFCondition DRTContourSequence::Item::getContourNumber(Sint32 &value, const unsi
 }
 
 
-OFCondition DRTContourSequence::Item::getContourOffsetVector(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ContourOffsetVector, value, pos);
-}
-
-
-OFCondition DRTContourSequence::Item::getContourOffsetVector(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, ContourOffsetVector).getFloat64(value, pos);
-}
-
-
-OFCondition DRTContourSequence::Item::getContourOffsetVector(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, ContourOffsetVector).getFloat64Vector(value);
-}
-
-
-OFCondition DRTContourSequence::Item::getContourSlabThickness(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ContourSlabThickness, value, pos);
-}
-
-
-OFCondition DRTContourSequence::Item::getContourSlabThickness(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, ContourSlabThickness).getFloat64(value, pos);
-}
-
-
 OFCondition DRTContourSequence::Item::getNumberOfContourPoints(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -282,19 +197,6 @@ OFCondition DRTContourSequence::Item::getNumberOfContourPoints(Sint32 &value, co
 }
 
 
-OFCondition DRTContourSequence::Item::setAttachedContours(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1-n") : EC_Normal;
-        if (result.good())
-            result = AttachedContours.putOFStringArray(value);
-    }
-    return result;
-}
-
-
 OFCondition DRTContourSequence::Item::setContourData(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -334,32 +236,6 @@ OFCondition DRTContourSequence::Item::setContourNumber(const OFString &value, co
 }
 
 
-OFCondition DRTContourSequence::Item::setContourOffsetVector(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal;
-        if (result.good())
-            result = ContourOffsetVector.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTContourSequence::Item::setContourSlabThickness(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ContourSlabThickness.putOFStringArray(value);
-    }
-    return result;
-}
-
-
 OFCondition DRTContourSequence::Item::setNumberOfContourPoints(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -497,10 +373,12 @@ OFCondition DRTContourSequence::gotoFirstItem()
 OFCondition DRTContourSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index ce67844909d26fd94cfa18dc15f513d057be6e37..0243647d76bdafcda5505280f2e1e675599b5364 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -335,10 +335,12 @@ OFCondition DRTConversionSourceAttributesSequence::gotoFirstItem()
 OFCondition DRTConversionSourceAttributesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5807e96dc3341590a0a345b9fd0b5909ab971b52..483961972ebcc84b685f573c5b8f740bb3604cea 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -453,10 +453,12 @@ OFCondition DRTChannelShieldSequence::gotoFirstItem()
 OFCondition DRTChannelShieldSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 1ec9f2243db711ccd057ffda978d685d8650539a..ad8506a973e5066ffe5c947e25f9d54c2164f624 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -424,10 +424,12 @@ OFCondition DRTCodingSchemeIdentificationSequence::gotoFirstItem()
 OFCondition DRTCodingSchemeIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 2782c876f6e8f61d521833e05d4e1ab969129b42..75635446ba0546494c55798ee44cd678ac9155f6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCodingSchemeResourcesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTCodingSchemeResourcesSequence::gotoFirstItem()
 OFCondition DRTCodingSchemeResourcesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 229c0620c4ef8559bf0ebd28cd587b6c2b27cbc5..0dde98f1c6b34c69e510d417107d8a3ab1e971df 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTChannelSourceSequence::gotoFirstItem()
 OFCondition DRTChannelSourceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtcttcs.cc b/dcmrt/libsrc/drtcttcs.cc
new file mode 100644 (file)
index 0000000..27256c3
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTClinicalTrialTimePointTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtcttcs.h"
+
+
+// --- item class ---
+
+DRTClinicalTrialTimePointTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::Item::~Item()
+{
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTClinicalTrialTimePointTypeCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTClinicalTrialTimePointTypeCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTClinicalTrialTimePointTypeCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "ClinicalTrialTimePointTypeCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTClinicalTrialTimePointTypeCodeSequence::DRTClinicalTrialTimePointTypeCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::DRTClinicalTrialTimePointTypeCodeSequence(const DRTClinicalTrialTimePointTypeCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence &DRTClinicalTrialTimePointTypeCodeSequence::operator=(const DRTClinicalTrialTimePointTypeCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::~DRTClinicalTrialTimePointTypeCodeSequence()
+{
+    clear();
+}
+
+
+void DRTClinicalTrialTimePointTypeCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTClinicalTrialTimePointTypeCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTClinicalTrialTimePointTypeCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTClinicalTrialTimePointTypeCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTClinicalTrialTimePointTypeCodeSequence::Item &DRTClinicalTrialTimePointTypeCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::read(DcmItem &dataset,
+                                                            const OFString &card,
+                                                            const OFString &type,
+                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ClinicalTrialTimePointTypeCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ClinicalTrialTimePointTypeCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTClinicalTrialTimePointTypeCodeSequence::write(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ClinicalTrialTimePointTypeCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtcvcss.cc b/dcmrt/libsrc/drtcvcss.cc
new file mode 100644 (file)
index 0000000..9349eb7
--- /dev/null
@@ -0,0 +1,549 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTConceptualVolumeConstituentSegmentationReferenceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtcvcss.h"
+
+
+// --- item class ---
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedDirectSegmentInstanceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ReferencedSegmentReferenceIndex(DCM_ReferencedSegmentReferenceIndex)
+{
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedDirectSegmentInstanceSequence(copy.ReferencedDirectSegmentInstanceSequence),
+    ReferencedSegmentReferenceIndex(copy.ReferencedSegmentReferenceIndex)
+{
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::~Item()
+{
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedDirectSegmentInstanceSequence = copy.ReferencedDirectSegmentInstanceSequence;
+        ReferencedSegmentReferenceIndex = copy.ReferencedSegmentReferenceIndex;
+    }
+    return *this;
+}
+
+
+void DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedDirectSegmentInstanceSequence.clear();
+        ReferencedSegmentReferenceIndex.clear();
+    }
+}
+
+
+OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::isEmpty()
+{
+    return ReferencedDirectSegmentInstanceSequence.isEmpty() &&
+           ReferencedSegmentReferenceIndex.isEmpty();
+}
+
+
+OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        ReferencedDirectSegmentInstanceSequence.read(item, "1-n", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence");
+        getAndCheckElementFromDataset(item, ReferencedSegmentReferenceIndex, "1", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        if (result.good()) result = ReferencedDirectSegmentInstanceSequence.write(item, "1-n", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(ReferencedSegmentReferenceIndex), "1", "1", "ConceptualVolumeConstituentSegmentationReferenceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::getReferencedSegmentReferenceIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, ReferencedSegmentReferenceIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item::setReferencedSegmentReferenceIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ReferencedSegmentReferenceIndex.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::DRTConceptualVolumeConstituentSegmentationReferenceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::DRTConceptualVolumeConstituentSegmentationReferenceSequence(const DRTConceptualVolumeConstituentSegmentationReferenceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence &DRTConceptualVolumeConstituentSegmentationReferenceSequence::operator=(const DRTConceptualVolumeConstituentSegmentationReferenceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::~DRTConceptualVolumeConstituentSegmentationReferenceSequence()
+{
+    clear();
+}
+
+
+void DRTConceptualVolumeConstituentSegmentationReferenceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTConceptualVolumeConstituentSegmentationReferenceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTConceptualVolumeConstituentSegmentationReferenceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTConceptualVolumeConstituentSegmentationReferenceSequence::Item &DRTConceptualVolumeConstituentSegmentationReferenceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::read(DcmItem &dataset,
+                                                                              const OFString &card,
+                                                                              const OFString &type,
+                                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ConceptualVolumeConstituentSegmentationReferenceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ConceptualVolumeConstituentSegmentationReferenceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeConstituentSegmentationReferenceSequence::write(DcmItem &dataset,
+                                                                               const OFString &card,
+                                                                               const OFString &type,
+                                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConceptualVolumeConstituentSegmentationReferenceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtcvdas.cc b/dcmrt/libsrc/drtcvdas.cc
new file mode 100644 (file)
index 0000000..d97ac4d
--- /dev/null
@@ -0,0 +1,647 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTConceptualVolumeDerivationAlgorithmSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtcvdas.h"
+
+
+// --- item class ---
+
+DRTConceptualVolumeDerivationAlgorithmSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AlgorithmFamilyCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    AlgorithmName(DCM_AlgorithmName),
+    AlgorithmNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    AlgorithmParameters(DCM_AlgorithmParameters),
+    AlgorithmSource(DCM_AlgorithmSource),
+    AlgorithmVersion(DCM_AlgorithmVersion)
+{
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AlgorithmFamilyCodeSequence(copy.AlgorithmFamilyCodeSequence),
+    AlgorithmName(copy.AlgorithmName),
+    AlgorithmNameCodeSequence(copy.AlgorithmNameCodeSequence),
+    AlgorithmParameters(copy.AlgorithmParameters),
+    AlgorithmSource(copy.AlgorithmSource),
+    AlgorithmVersion(copy.AlgorithmVersion)
+{
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::Item::~Item()
+{
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AlgorithmFamilyCodeSequence = copy.AlgorithmFamilyCodeSequence;
+        AlgorithmName = copy.AlgorithmName;
+        AlgorithmNameCodeSequence = copy.AlgorithmNameCodeSequence;
+        AlgorithmParameters = copy.AlgorithmParameters;
+        AlgorithmSource = copy.AlgorithmSource;
+        AlgorithmVersion = copy.AlgorithmVersion;
+    }
+    return *this;
+}
+
+
+void DRTConceptualVolumeDerivationAlgorithmSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        AlgorithmFamilyCodeSequence.clear();
+        AlgorithmNameCodeSequence.clear();
+        AlgorithmName.clear();
+        AlgorithmVersion.clear();
+        AlgorithmParameters.clear();
+        AlgorithmSource.clear();
+    }
+}
+
+
+OFBool DRTConceptualVolumeDerivationAlgorithmSequence::Item::isEmpty()
+{
+    return AlgorithmFamilyCodeSequence.isEmpty() &&
+           AlgorithmNameCodeSequence.isEmpty() &&
+           AlgorithmName.isEmpty() &&
+           AlgorithmVersion.isEmpty() &&
+           AlgorithmParameters.isEmpty() &&
+           AlgorithmSource.isEmpty();
+}
+
+
+OFBool DRTConceptualVolumeDerivationAlgorithmSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        AlgorithmFamilyCodeSequence.read(item, "1-n", "1", "ConceptualVolumeDerivationAlgorithmSequence");
+        AlgorithmNameCodeSequence.read(item, "1-n", "3", "ConceptualVolumeDerivationAlgorithmSequence");
+        getAndCheckElementFromDataset(item, AlgorithmName, "1", "1", "ConceptualVolumeDerivationAlgorithmSequence");
+        getAndCheckElementFromDataset(item, AlgorithmVersion, "1", "1", "ConceptualVolumeDerivationAlgorithmSequence");
+        getAndCheckElementFromDataset(item, AlgorithmParameters, "1", "3", "ConceptualVolumeDerivationAlgorithmSequence");
+        getAndCheckElementFromDataset(item, AlgorithmSource, "1", "3", "ConceptualVolumeDerivationAlgorithmSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        if (result.good()) result = AlgorithmFamilyCodeSequence.write(item, "1-n", "1", "ConceptualVolumeDerivationAlgorithmSequence");
+        if (result.good()) result = AlgorithmNameCodeSequence.write(item, "1-n", "3", "ConceptualVolumeDerivationAlgorithmSequence");
+        addElementToDataset(result, item, new DcmLongString(AlgorithmName), "1", "1", "ConceptualVolumeDerivationAlgorithmSequence");
+        addElementToDataset(result, item, new DcmLongString(AlgorithmVersion), "1", "1", "ConceptualVolumeDerivationAlgorithmSequence");
+        addElementToDataset(result, item, new DcmLongText(AlgorithmParameters), "1", "3", "ConceptualVolumeDerivationAlgorithmSequence");
+        addElementToDataset(result, item, new DcmLongString(AlgorithmSource), "1", "3", "ConceptualVolumeDerivationAlgorithmSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmName, value, pos);
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmParameters(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmParameters, value, pos);
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmSource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmSource, value, pos);
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::getAlgorithmVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmVersion, value, pos);
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlgorithmName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmParameters(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = AlgorithmParameters.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmSource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlgorithmSource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::Item::setAlgorithmVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlgorithmVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTConceptualVolumeDerivationAlgorithmSequence::DRTConceptualVolumeDerivationAlgorithmSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::DRTConceptualVolumeDerivationAlgorithmSequence(const DRTConceptualVolumeDerivationAlgorithmSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence &DRTConceptualVolumeDerivationAlgorithmSequence::operator=(const DRTConceptualVolumeDerivationAlgorithmSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::~DRTConceptualVolumeDerivationAlgorithmSequence()
+{
+    clear();
+}
+
+
+void DRTConceptualVolumeDerivationAlgorithmSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTConceptualVolumeDerivationAlgorithmSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTConceptualVolumeDerivationAlgorithmSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTConceptualVolumeDerivationAlgorithmSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTConceptualVolumeDerivationAlgorithmSequence::Item &DRTConceptualVolumeDerivationAlgorithmSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::read(DcmItem &dataset,
+                                                                 const OFString &card,
+                                                                 const OFString &type,
+                                                                 const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ConceptualVolumeDerivationAlgorithmSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ConceptualVolumeDerivationAlgorithmSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeDerivationAlgorithmSequence::write(DcmItem &dataset,
+                                                                  const OFString &card,
+                                                                  const OFString &type,
+                                                                  const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConceptualVolumeDerivationAlgorithmSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtcvis.cc b/dcmrt/libsrc/drtcvis.cc
new file mode 100644 (file)
index 0000000..25b06fe
--- /dev/null
@@ -0,0 +1,567 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTConceptualVolumeIdentificationSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtcvis.h"
+
+
+// --- item class ---
+
+DRTConceptualVolumeIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ConceptualVolumeUID(DCM_ConceptualVolumeUID),
+    DerivationConceptualVolumeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    EquivalentConceptualVolumesSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    OriginatingSOPInstanceReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+{
+}
+
+
+DRTConceptualVolumeIdentificationSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ConceptualVolumeUID(copy.ConceptualVolumeUID),
+    DerivationConceptualVolumeSequence(copy.DerivationConceptualVolumeSequence),
+    EquivalentConceptualVolumesSequence(copy.EquivalentConceptualVolumesSequence),
+    OriginatingSOPInstanceReferenceSequence(copy.OriginatingSOPInstanceReferenceSequence)
+{
+}
+
+
+DRTConceptualVolumeIdentificationSequence::Item::~Item()
+{
+}
+
+
+DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ConceptualVolumeUID = copy.ConceptualVolumeUID;
+        DerivationConceptualVolumeSequence = copy.DerivationConceptualVolumeSequence;
+        EquivalentConceptualVolumesSequence = copy.EquivalentConceptualVolumesSequence;
+        OriginatingSOPInstanceReferenceSequence = copy.OriginatingSOPInstanceReferenceSequence;
+    }
+    return *this;
+}
+
+
+void DRTConceptualVolumeIdentificationSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ConceptualVolumeUID.clear();
+        OriginatingSOPInstanceReferenceSequence.clear();
+        EquivalentConceptualVolumesSequence.clear();
+        DerivationConceptualVolumeSequence.clear();
+    }
+}
+
+
+OFBool DRTConceptualVolumeIdentificationSequence::Item::isEmpty()
+{
+    return ConceptualVolumeUID.isEmpty() &&
+           OriginatingSOPInstanceReferenceSequence.isEmpty() &&
+           EquivalentConceptualVolumesSequence.isEmpty() &&
+           DerivationConceptualVolumeSequence.isEmpty();
+}
+
+
+OFBool DRTConceptualVolumeIdentificationSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ConceptualVolumeUID, "1", "1", "ConceptualVolumeIdentificationSequence");
+        OriginatingSOPInstanceReferenceSequence.read(item, "1-n", "1C", "ConceptualVolumeIdentificationSequence");
+        EquivalentConceptualVolumesSequence.read(item, "1-n", "3", "ConceptualVolumeIdentificationSequence");
+        DerivationConceptualVolumeSequence.read(item, "1-n", "3", "ConceptualVolumeIdentificationSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ConceptualVolumeUID), "1", "1", "ConceptualVolumeIdentificationSequence");
+        if (result.good()) result = OriginatingSOPInstanceReferenceSequence.write(item, "1-n", "1C", "ConceptualVolumeIdentificationSequence");
+        if (result.good()) result = EquivalentConceptualVolumesSequence.write(item, "1-n", "3", "ConceptualVolumeIdentificationSequence");
+        if (result.good()) result = DerivationConceptualVolumeSequence.write(item, "1-n", "3", "ConceptualVolumeIdentificationSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::Item::getConceptualVolumeUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ConceptualVolumeUID, value, pos);
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::Item::setConceptualVolumeUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ConceptualVolumeUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTConceptualVolumeIdentificationSequence::DRTConceptualVolumeIdentificationSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTConceptualVolumeIdentificationSequence::DRTConceptualVolumeIdentificationSequence(const DRTConceptualVolumeIdentificationSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTConceptualVolumeIdentificationSequence &DRTConceptualVolumeIdentificationSequence::operator=(const DRTConceptualVolumeIdentificationSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTConceptualVolumeIdentificationSequence::~DRTConceptualVolumeIdentificationSequence()
+{
+    clear();
+}
+
+
+void DRTConceptualVolumeIdentificationSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTConceptualVolumeIdentificationSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTConceptualVolumeIdentificationSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTConceptualVolumeIdentificationSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTConceptualVolumeIdentificationSequence::Item &DRTConceptualVolumeIdentificationSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::read(DcmItem &dataset,
+                                                            const OFString &card,
+                                                            const OFString &type,
+                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ConceptualVolumeIdentificationSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ConceptualVolumeIdentificationSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTConceptualVolumeIdentificationSequence::write(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConceptualVolumeIdentificationSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtdccs.cc b/dcmrt/libsrc/drtdccs.cc
new file mode 100644 (file)
index 0000000..f1266cd
--- /dev/null
@@ -0,0 +1,659 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTDoseCalibrationConditionsSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtdccs.h"
+
+
+// --- item class ---
+
+DRTDoseCalibrationConditionsSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AbsorbedDoseToMetersetRatio(DCM_AbsorbedDoseToMetersetRatio),
+    CalibrationDateTime(DCM_CalibrationDateTime),
+    CalibrationReferencePointDepth(DCM_CalibrationReferencePointDepth),
+    DelineatedRadiationFieldSize(DCM_DelineatedRadiationFieldSize),
+    SourceToSurfaceDistance(DCM_SourceToSurfaceDistance)
+{
+}
+
+
+DRTDoseCalibrationConditionsSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AbsorbedDoseToMetersetRatio(copy.AbsorbedDoseToMetersetRatio),
+    CalibrationDateTime(copy.CalibrationDateTime),
+    CalibrationReferencePointDepth(copy.CalibrationReferencePointDepth),
+    DelineatedRadiationFieldSize(copy.DelineatedRadiationFieldSize),
+    SourceToSurfaceDistance(copy.SourceToSurfaceDistance)
+{
+}
+
+
+DRTDoseCalibrationConditionsSequence::Item::~Item()
+{
+}
+
+
+DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AbsorbedDoseToMetersetRatio = copy.AbsorbedDoseToMetersetRatio;
+        CalibrationDateTime = copy.CalibrationDateTime;
+        CalibrationReferencePointDepth = copy.CalibrationReferencePointDepth;
+        DelineatedRadiationFieldSize = copy.DelineatedRadiationFieldSize;
+        SourceToSurfaceDistance = copy.SourceToSurfaceDistance;
+    }
+    return *this;
+}
+
+
+void DRTDoseCalibrationConditionsSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        AbsorbedDoseToMetersetRatio.clear();
+        DelineatedRadiationFieldSize.clear();
+        CalibrationReferencePointDepth.clear();
+        SourceToSurfaceDistance.clear();
+        CalibrationDateTime.clear();
+    }
+}
+
+
+OFBool DRTDoseCalibrationConditionsSequence::Item::isEmpty()
+{
+    return AbsorbedDoseToMetersetRatio.isEmpty() &&
+           DelineatedRadiationFieldSize.isEmpty() &&
+           CalibrationReferencePointDepth.isEmpty() &&
+           SourceToSurfaceDistance.isEmpty() &&
+           CalibrationDateTime.isEmpty();
+}
+
+
+OFBool DRTDoseCalibrationConditionsSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, AbsorbedDoseToMetersetRatio, "1", "1", "DoseCalibrationConditionsSequence");
+        getAndCheckElementFromDataset(item, DelineatedRadiationFieldSize, "2", "1", "DoseCalibrationConditionsSequence");
+        getAndCheckElementFromDataset(item, CalibrationReferencePointDepth, "1", "1", "DoseCalibrationConditionsSequence");
+        getAndCheckElementFromDataset(item, SourceToSurfaceDistance, "1", "1", "DoseCalibrationConditionsSequence");
+        getAndCheckElementFromDataset(item, CalibrationDateTime, "1", "2", "DoseCalibrationConditionsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmFloatingPointDouble(AbsorbedDoseToMetersetRatio), "1", "1", "DoseCalibrationConditionsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(DelineatedRadiationFieldSize), "2", "1", "DoseCalibrationConditionsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(CalibrationReferencePointDepth), "1", "1", "DoseCalibrationConditionsSequence");
+        addElementToDataset(result, item, new DcmDecimalString(SourceToSurfaceDistance), "1", "1", "DoseCalibrationConditionsSequence");
+        addElementToDataset(result, item, new DcmDateTime(CalibrationDateTime), "1", "2", "DoseCalibrationConditionsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::getAbsorbedDoseToMetersetRatio(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, AbsorbedDoseToMetersetRatio).getFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::getCalibrationDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CalibrationDateTime, value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::getCalibrationReferencePointDepth(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, CalibrationReferencePointDepth).getFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::getDelineatedRadiationFieldSize(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, DelineatedRadiationFieldSize).getFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::getSourceToSurfaceDistance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SourceToSurfaceDistance, value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::getSourceToSurfaceDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, SourceToSurfaceDistance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::setAbsorbedDoseToMetersetRatio(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return AbsorbedDoseToMetersetRatio.putFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::setCalibrationDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CalibrationDateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::setCalibrationReferencePointDepth(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return CalibrationReferencePointDepth.putFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::setDelineatedRadiationFieldSize(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DelineatedRadiationFieldSize.putFloat64(value, pos);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::Item::setSourceToSurfaceDistance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = SourceToSurfaceDistance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTDoseCalibrationConditionsSequence::DRTDoseCalibrationConditionsSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTDoseCalibrationConditionsSequence::DRTDoseCalibrationConditionsSequence(const DRTDoseCalibrationConditionsSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTDoseCalibrationConditionsSequence &DRTDoseCalibrationConditionsSequence::operator=(const DRTDoseCalibrationConditionsSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTDoseCalibrationConditionsSequence::~DRTDoseCalibrationConditionsSequence()
+{
+    clear();
+}
+
+
+void DRTDoseCalibrationConditionsSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTDoseCalibrationConditionsSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTDoseCalibrationConditionsSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTDoseCalibrationConditionsSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTDoseCalibrationConditionsSequence::Item &DRTDoseCalibrationConditionsSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::read(DcmItem &dataset,
+                                                       const OFString &card,
+                                                       const OFString &type,
+                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_DoseCalibrationConditionsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_DoseCalibrationConditionsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseCalibrationConditionsSequence::write(DcmItem &dataset,
+                                                        const OFString &card,
+                                                        const OFString &type,
+                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DoseCalibrationConditionsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index d5222b38bc8a5777e820b5f212ec6ea489e21c5f..0167ea11a812a76c589a97213c5632d6381d53cc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTDerivationCodeSequence::gotoFirstItem()
 OFCondition DRTDerivationCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtdcvs.cc b/dcmrt/libsrc/drtdcvs.cc
new file mode 100644 (file)
index 0000000..659b6b7
--- /dev/null
@@ -0,0 +1,560 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTDerivationConceptualVolumeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtdcvs.h"
+
+
+// --- item class ---
+
+DRTDerivationConceptualVolumeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ConceptualVolumeDerivationAlgorithmSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    DerivationDescription(DCM_DerivationDescription),
+    SourceConceptualVolumeSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+{
+}
+
+
+DRTDerivationConceptualVolumeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ConceptualVolumeDerivationAlgorithmSequence(copy.ConceptualVolumeDerivationAlgorithmSequence),
+    DerivationDescription(copy.DerivationDescription),
+    SourceConceptualVolumeSequence(copy.SourceConceptualVolumeSequence)
+{
+}
+
+
+DRTDerivationConceptualVolumeSequence::Item::~Item()
+{
+}
+
+
+DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ConceptualVolumeDerivationAlgorithmSequence = copy.ConceptualVolumeDerivationAlgorithmSequence;
+        DerivationDescription = copy.DerivationDescription;
+        SourceConceptualVolumeSequence = copy.SourceConceptualVolumeSequence;
+    }
+    return *this;
+}
+
+
+void DRTDerivationConceptualVolumeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        DerivationDescription.clear();
+        SourceConceptualVolumeSequence.clear();
+        ConceptualVolumeDerivationAlgorithmSequence.clear();
+    }
+}
+
+
+OFBool DRTDerivationConceptualVolumeSequence::Item::isEmpty()
+{
+    return DerivationDescription.isEmpty() &&
+           SourceConceptualVolumeSequence.isEmpty() &&
+           ConceptualVolumeDerivationAlgorithmSequence.isEmpty();
+}
+
+
+OFBool DRTDerivationConceptualVolumeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, DerivationDescription, "1", "3", "DerivationConceptualVolumeSequence");
+        SourceConceptualVolumeSequence.read(item, "1-n", "1", "DerivationConceptualVolumeSequence");
+        ConceptualVolumeDerivationAlgorithmSequence.read(item, "1-n", "3", "DerivationConceptualVolumeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortText(DerivationDescription), "1", "3", "DerivationConceptualVolumeSequence");
+        if (result.good()) result = SourceConceptualVolumeSequence.write(item, "1-n", "1", "DerivationConceptualVolumeSequence");
+        if (result.good()) result = ConceptualVolumeDerivationAlgorithmSequence.write(item, "1-n", "3", "DerivationConceptualVolumeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::Item::getDerivationDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DerivationDescription, value, pos);
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::Item::setDerivationDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = DerivationDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTDerivationConceptualVolumeSequence::DRTDerivationConceptualVolumeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTDerivationConceptualVolumeSequence::DRTDerivationConceptualVolumeSequence(const DRTDerivationConceptualVolumeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTDerivationConceptualVolumeSequence &DRTDerivationConceptualVolumeSequence::operator=(const DRTDerivationConceptualVolumeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTDerivationConceptualVolumeSequence::~DRTDerivationConceptualVolumeSequence()
+{
+    clear();
+}
+
+
+void DRTDerivationConceptualVolumeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTDerivationConceptualVolumeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTDerivationConceptualVolumeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTDerivationConceptualVolumeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTDerivationConceptualVolumeSequence::Item &DRTDerivationConceptualVolumeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::read(DcmItem &dataset,
+                                                        const OFString &card,
+                                                        const OFString &type,
+                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_DerivationConceptualVolumeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_DerivationConceptualVolumeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTDerivationConceptualVolumeSequence::write(DcmItem &dataset,
+                                                         const OFString &card,
+                                                         const OFString &type,
+                                                         const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DerivationConceptualVolumeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 7a4f351f268bc75174507e6e0aafb4f04b6b3c94..5f417d02d26bde6a87e7f64de8a8cc91c38528bc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeliveredDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -343,10 +343,12 @@ OFCondition DRTDeliveredDepthDoseParametersSequence::gotoFirstItem()
 OFCondition DRTDeliveredDepthDoseParametersSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 4227d759a65c25ec13aff5b7dcbc4c0ac097926d..28b90b2d41ebcce59962049e6c6237349a7cf74f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDepthDoseParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -343,10 +343,12 @@ OFCondition DRTDepthDoseParametersSequence::gotoFirstItem()
 OFCondition DRTDepthDoseParametersSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtdfss.cc b/dcmrt/libsrc/drtdfss.cc
new file mode 100644 (file)
index 0000000..009b98a
--- /dev/null
@@ -0,0 +1,575 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTDefinitionSourceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtdfss.h"
+
+
+// --- item class ---
+
+DRTDefinitionSourceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTDefinitionSourceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTDefinitionSourceSequence::Item::~Item()
+{
+}
+
+
+DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTDefinitionSourceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+    }
+}
+
+
+OFBool DRTDefinitionSourceSequence::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty();
+}
+
+
+OFBool DRTDefinitionSourceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "DefinitionSourceSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "DefinitionSourceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "DefinitionSourceSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "DefinitionSourceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTDefinitionSourceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTDefinitionSourceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTDefinitionSourceSequence::DRTDefinitionSourceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTDefinitionSourceSequence::DRTDefinitionSourceSequence(const DRTDefinitionSourceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTDefinitionSourceSequence &DRTDefinitionSourceSequence::operator=(const DRTDefinitionSourceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTDefinitionSourceSequence::~DRTDefinitionSourceSequence()
+{
+    clear();
+}
+
+
+void DRTDefinitionSourceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTDefinitionSourceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTDefinitionSourceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTDefinitionSourceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTDefinitionSourceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTDefinitionSourceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTDefinitionSourceSequence::Item &DRTDefinitionSourceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTDefinitionSourceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::read(DcmItem &dataset,
+                                              const OFString &card,
+                                              const OFString &type,
+                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_DefinitionSourceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_DefinitionSourceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTDefinitionSourceSequence::write(DcmItem &dataset,
+                                               const OFString &card,
+                                               const OFString &type,
+                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DefinitionSourceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 41b64cfad6a1b1cdd5a170a4e7e79c7762cf9d12..e708cb5ec8f427e5b3886f2d9942b26278c129b1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeidentificationActionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -268,10 +268,12 @@ OFCondition DRTDeidentificationActionSequence::gotoFirstItem()
 OFCondition DRTDeidentificationActionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 750b3169d22ea492262c2ca8795630082887ad86..6197fea17f23dc217779c61e07b26731659fbefc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTDeidentificationMethodCodeSequence::gotoFirstItem()
 OFCondition DRTDeidentificationMethodCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 8aef4e48820b1051dc15d383988f740940957c2d..4fd0dcc7dd724e01a7e3a8321df7d9ef27a243db 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTDICOMMediaRetrievalSequence::gotoFirstItem()
 OFCondition DRTDICOMMediaRetrievalSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index f1fad2c62d952fd8e66efb01f1631d0c0d76ba44..11328f0f9d6eac8d70e7da99f17a7f8f5b612ae5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -243,10 +243,12 @@ OFCondition DRTDICOMRetrievalSequence::gotoFirstItem()
 OFCondition DRTDICOMRetrievalSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 9b63bbbdecb7662195aa9c0e3cdd5c1b0873e08a..a2a7b08e4a66b70a75c8592daf81a97f859f00b0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@ DRTDoseIOD::DRTDoseIOD()
     PatientID(DCM_PatientID),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
+    TypeOfPatientID(DCM_TypeOfPatientID),
     PatientBirthDate(DCM_PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
@@ -78,6 +79,7 @@ DRTDoseIOD::DRTDoseIOD()
     PhysiciansOfRecordIdentificationSequence(),
     NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(),
+    RequestingService(DCM_RequestingService),
     RequestingServiceCodeSequence(),
     ReferencedStudySequence(),
     ProcedureCodeSequence(),
@@ -101,12 +103,15 @@ DRTDoseIOD::DRTDoseIOD()
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
     IssuerOfAdmissionIDSequence(),
+    ReasonForVisit(DCM_ReasonForVisit),
+    ReasonForVisitCodeSequence(),
     ServiceEpisodeID(DCM_ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(),
     ServiceEpisodeDescription(DCM_ServiceEpisodeDescription),
     PatientSexNeutered(DCM_PatientSexNeutered),
     ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(),
     LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(),
@@ -129,6 +134,7 @@ DRTDoseIOD::DRTDoseIOD()
     PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(),
     CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(DCM_TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription),
@@ -139,22 +145,20 @@ DRTDoseIOD::DRTDoseIOD()
     InstitutionAddress(DCM_InstitutionAddress),
     StationName(DCM_StationName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
     UDISequence(),
+    DeviceUID(DCM_DeviceUID),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
     PixelPaddingValue(DCM_PixelPaddingValue),
     PatientOrientation(DCM_PatientOrientation),
     ImageType(DCM_ImageType),
-    AcquisitionNumber(DCM_AcquisitionNumber),
-    AcquisitionDate(DCM_AcquisitionDate),
-    AcquisitionTime(DCM_AcquisitionTime),
-    AcquisitionDateTime(DCM_AcquisitionDateTime),
-    ImagesInAcquisition(DCM_ImagesInAcquisition),
     ImageComments(DCM_ImageComments),
     QualityControlImage(DCM_QualityControlImage),
     BurnedInAnnotation(DCM_BurnedInAnnotation),
@@ -164,12 +168,15 @@ DRTDoseIOD::DRTDoseIOD()
     LossyImageCompressionMethod(DCM_LossyImageCompressionMethod),
     IconImageSequence(),
     PresentationLUTShape(DCM_PresentationLUTShape),
-    IrradiationEventUID(DCM_IrradiationEventUID),
     RealWorldValueMappingSequence(),
+    ImageLaterality(DCM_ImageLaterality),
+    AnatomicRegionSequence(),
+    PrimaryAnatomicStructureSequence(),
     PixelSpacing(DCM_PixelSpacing),
     ImageOrientationPatient(DCM_ImageOrientationPatient),
     ImagePositionPatient(DCM_ImagePositionPatient),
     SliceThickness(DCM_SliceThickness),
+    SpacingBetweenSlices(DCM_SpacingBetweenSlices),
     SliceLocation(DCM_SliceLocation),
     Rows(DCM_Rows),
     Columns(DCM_Columns),
@@ -188,28 +195,12 @@ DRTDoseIOD::DRTDoseIOD()
     PixelData(DCM_PixelData),
     PixelDataProviderURL(DCM_PixelDataProviderURL),
     PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit),
+    ExtendedOffsetTable(DCM_ExtendedOffsetTable),
+    ExtendedOffsetTableLengths(DCM_ExtendedOffsetTableLengths),
     NumberOfFrames(DCM_NumberOfFrames),
     FrameIncrementPointer(DCM_FrameIncrementPointer),
     StereoPairsPresent(DCM_StereoPairsPresent),
-    OverlayRows(DCM_OverlayRows),
-    OverlayColumns(DCM_OverlayColumns),
-    OverlayType(DCM_OverlayType),
-    OverlayOrigin(DCM_OverlayOrigin),
-    OverlayBitsAllocated(DCM_OverlayBitsAllocated),
-    OverlayBitPosition(DCM_OverlayBitPosition),
-    OverlayData(DCM_OverlayData),
-    OverlayDescription(DCM_OverlayDescription),
-    OverlaySubtype(DCM_OverlaySubtype),
-    OverlayLabel(DCM_OverlayLabel),
-    ROIArea(DCM_ROIArea),
-    ROIMean(DCM_ROIMean),
-    ROIStandardDeviation(DCM_ROIStandardDeviation),
-    NumberOfFramesInOverlay(DCM_NumberOfFramesInOverlay),
-    ImageFrameOrigin(DCM_ImageFrameOrigin),
-    ModalityLUTSequence(),
-    RescaleIntercept(DCM_RescaleIntercept),
-    RescaleSlope(DCM_RescaleSlope),
-    RescaleType(DCM_RescaleType),
+    EncapsulatedPixelDataValueTotalLength(DCM_EncapsulatedPixelDataValueTotalLength),
     SamplesPerPixel(DCM_SamplesPerPixel),
     PhotometricInterpretation(DCM_PhotometricInterpretation),
     BitsAllocated(DCM_BitsAllocated),
@@ -223,6 +214,7 @@ DRTDoseIOD::DRTDoseIOD()
     SpatialTransformOfDose(DCM_SpatialTransformOfDose),
     ReferencedSpatialRegistrationSequence(),
     InstanceNumber(DCM_InstanceNumber),
+    EntityLongLabel(DCM_EntityLongLabel),
     DoseComment(DCM_DoseComment),
     NormalizationPoint(DCM_NormalizationPoint),
     DoseSummationType(DCM_DoseSummationType),
@@ -233,20 +225,11 @@ DRTDoseIOD::DRTDoseIOD()
     TissueHeterogeneityCorrection(DCM_TissueHeterogeneityCorrection),
     DerivationCodeSequence(),
     ReferencedInstanceSequence(),
+    PlanOverviewSequence(),
     ReferencedStructureSetSequence(),
     DVHNormalizationPoint(DCM_DVHNormalizationPoint),
     DVHNormalizationDoseValue(DCM_DVHNormalizationDoseValue),
     DVHSequence(),
-    StructureSetLabel(DCM_StructureSetLabel),
-    StructureSetName(DCM_StructureSetName),
-    StructureSetDescription(DCM_StructureSetDescription),
-    StructureSetDate(DCM_StructureSetDate),
-    StructureSetTime(DCM_StructureSetTime),
-    ReferencedFrameOfReferenceSequence(),
-    StructureSetROISequence(),
-    PredecessorStructureSetSequence(),
-    ROIContourSequence(),
-    RTDoseROISequence(),
     SOPClassUID(DCM_SOPClassUID),
     SOPInstanceUID(DCM_SOPInstanceUID),
     SpecificCharacterSet(DCM_SpecificCharacterSet),
@@ -275,6 +258,10 @@ DRTDoseIOD::DRTDoseIOD()
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
     PrivateDataElementCharacteristicsSequence(),
+    InstanceOriginStatus(DCM_InstanceOriginStatus),
+    BarcodeValue(DCM_BarcodeValue),
+    ReferencedDefinedProtocolSequence(),
+    ReferencedPerformedProtocolSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence(),
     FrameExtractionSequence()
@@ -289,6 +276,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PatientID(copy.PatientID),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
+    TypeOfPatientID(copy.TypeOfPatientID),
     PatientBirthDate(copy.PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
@@ -345,6 +333,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence),
     NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence),
+    RequestingService(copy.RequestingService),
     RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence),
     ReferencedStudySequence(copy.ReferencedStudySequence),
     ProcedureCodeSequence(copy.ProcedureCodeSequence),
@@ -368,12 +357,15 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
     IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence),
+    ReasonForVisit(copy.ReasonForVisit),
+    ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence),
     ServiceEpisodeID(copy.ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence),
     ServiceEpisodeDescription(copy.ServiceEpisodeDescription),
     PatientSexNeutered(copy.PatientSexNeutered),
     ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence),
     LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence),
@@ -396,6 +388,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence),
     CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(copy.TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription),
@@ -406,22 +399,20 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     InstitutionAddress(copy.InstitutionAddress),
     StationName(copy.StationName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
     UDISequence(copy.UDISequence),
+    DeviceUID(copy.DeviceUID),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
     PixelPaddingValue(copy.PixelPaddingValue),
     PatientOrientation(copy.PatientOrientation),
     ImageType(copy.ImageType),
-    AcquisitionNumber(copy.AcquisitionNumber),
-    AcquisitionDate(copy.AcquisitionDate),
-    AcquisitionTime(copy.AcquisitionTime),
-    AcquisitionDateTime(copy.AcquisitionDateTime),
-    ImagesInAcquisition(copy.ImagesInAcquisition),
     ImageComments(copy.ImageComments),
     QualityControlImage(copy.QualityControlImage),
     BurnedInAnnotation(copy.BurnedInAnnotation),
@@ -431,12 +422,15 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     LossyImageCompressionMethod(copy.LossyImageCompressionMethod),
     IconImageSequence(copy.IconImageSequence),
     PresentationLUTShape(copy.PresentationLUTShape),
-    IrradiationEventUID(copy.IrradiationEventUID),
     RealWorldValueMappingSequence(copy.RealWorldValueMappingSequence),
+    ImageLaterality(copy.ImageLaterality),
+    AnatomicRegionSequence(copy.AnatomicRegionSequence),
+    PrimaryAnatomicStructureSequence(copy.PrimaryAnatomicStructureSequence),
     PixelSpacing(copy.PixelSpacing),
     ImageOrientationPatient(copy.ImageOrientationPatient),
     ImagePositionPatient(copy.ImagePositionPatient),
     SliceThickness(copy.SliceThickness),
+    SpacingBetweenSlices(copy.SpacingBetweenSlices),
     SliceLocation(copy.SliceLocation),
     Rows(copy.Rows),
     Columns(copy.Columns),
@@ -455,28 +449,12 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PixelData(copy.PixelData),
     PixelDataProviderURL(copy.PixelDataProviderURL),
     PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit),
+    ExtendedOffsetTable(copy.ExtendedOffsetTable),
+    ExtendedOffsetTableLengths(copy.ExtendedOffsetTableLengths),
     NumberOfFrames(copy.NumberOfFrames),
     FrameIncrementPointer(copy.FrameIncrementPointer),
     StereoPairsPresent(copy.StereoPairsPresent),
-    OverlayRows(copy.OverlayRows),
-    OverlayColumns(copy.OverlayColumns),
-    OverlayType(copy.OverlayType),
-    OverlayOrigin(copy.OverlayOrigin),
-    OverlayBitsAllocated(copy.OverlayBitsAllocated),
-    OverlayBitPosition(copy.OverlayBitPosition),
-    OverlayData(copy.OverlayData),
-    OverlayDescription(copy.OverlayDescription),
-    OverlaySubtype(copy.OverlaySubtype),
-    OverlayLabel(copy.OverlayLabel),
-    ROIArea(copy.ROIArea),
-    ROIMean(copy.ROIMean),
-    ROIStandardDeviation(copy.ROIStandardDeviation),
-    NumberOfFramesInOverlay(copy.NumberOfFramesInOverlay),
-    ImageFrameOrigin(copy.ImageFrameOrigin),
-    ModalityLUTSequence(copy.ModalityLUTSequence),
-    RescaleIntercept(copy.RescaleIntercept),
-    RescaleSlope(copy.RescaleSlope),
-    RescaleType(copy.RescaleType),
+    EncapsulatedPixelDataValueTotalLength(copy.EncapsulatedPixelDataValueTotalLength),
     SamplesPerPixel(copy.SamplesPerPixel),
     PhotometricInterpretation(copy.PhotometricInterpretation),
     BitsAllocated(copy.BitsAllocated),
@@ -490,6 +468,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     SpatialTransformOfDose(copy.SpatialTransformOfDose),
     ReferencedSpatialRegistrationSequence(copy.ReferencedSpatialRegistrationSequence),
     InstanceNumber(copy.InstanceNumber),
+    EntityLongLabel(copy.EntityLongLabel),
     DoseComment(copy.DoseComment),
     NormalizationPoint(copy.NormalizationPoint),
     DoseSummationType(copy.DoseSummationType),
@@ -500,20 +479,11 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     TissueHeterogeneityCorrection(copy.TissueHeterogeneityCorrection),
     DerivationCodeSequence(copy.DerivationCodeSequence),
     ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
+    PlanOverviewSequence(copy.PlanOverviewSequence),
     ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence),
     DVHNormalizationPoint(copy.DVHNormalizationPoint),
     DVHNormalizationDoseValue(copy.DVHNormalizationDoseValue),
     DVHSequence(copy.DVHSequence),
-    StructureSetLabel(copy.StructureSetLabel),
-    StructureSetName(copy.StructureSetName),
-    StructureSetDescription(copy.StructureSetDescription),
-    StructureSetDate(copy.StructureSetDate),
-    StructureSetTime(copy.StructureSetTime),
-    ReferencedFrameOfReferenceSequence(copy.ReferencedFrameOfReferenceSequence),
-    StructureSetROISequence(copy.StructureSetROISequence),
-    PredecessorStructureSetSequence(copy.PredecessorStructureSetSequence),
-    ROIContourSequence(copy.ROIContourSequence),
-    RTDoseROISequence(copy.RTDoseROISequence),
     SOPClassUID(copy.SOPClassUID),
     SOPInstanceUID(copy.SOPInstanceUID),
     SpecificCharacterSet(copy.SpecificCharacterSet),
@@ -542,6 +512,10 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
     PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
+    InstanceOriginStatus(copy.InstanceOriginStatus),
+    BarcodeValue(copy.BarcodeValue),
+    ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence),
+    ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence),
     FrameExtractionSequence(copy.FrameExtractionSequence)
@@ -562,6 +536,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PatientID = copy.PatientID;
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
+        TypeOfPatientID = copy.TypeOfPatientID;
         PatientBirthDate = copy.PatientBirthDate;
         PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
         PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
@@ -618,6 +593,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence;
         NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy;
         PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence;
+        RequestingService = copy.RequestingService;
         RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence;
         ReferencedStudySequence = copy.ReferencedStudySequence;
         ProcedureCodeSequence = copy.ProcedureCodeSequence;
@@ -641,12 +617,15 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
         IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence;
+        ReasonForVisit = copy.ReasonForVisit;
+        ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence;
         ServiceEpisodeID = copy.ServiceEpisodeID;
         IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence;
         ServiceEpisodeDescription = copy.ServiceEpisodeDescription;
         PatientSexNeutered = copy.PatientSexNeutered;
         ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID;
         ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription;
+        ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence;
         LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent;
         LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType;
         ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence;
@@ -669,6 +648,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription;
         PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence;
         CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep;
+        TreatmentSessionUID = copy.TreatmentSessionUID;
         ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName;
         ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID;
         ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription;
@@ -679,22 +659,20 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         InstitutionAddress = copy.InstitutionAddress;
         StationName = copy.StationName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
         UDISequence = copy.UDISequence;
+        DeviceUID = copy.DeviceUID;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
         PixelPaddingValue = copy.PixelPaddingValue;
         PatientOrientation = copy.PatientOrientation;
         ImageType = copy.ImageType;
-        AcquisitionNumber = copy.AcquisitionNumber;
-        AcquisitionDate = copy.AcquisitionDate;
-        AcquisitionTime = copy.AcquisitionTime;
-        AcquisitionDateTime = copy.AcquisitionDateTime;
-        ImagesInAcquisition = copy.ImagesInAcquisition;
         ImageComments = copy.ImageComments;
         QualityControlImage = copy.QualityControlImage;
         BurnedInAnnotation = copy.BurnedInAnnotation;
@@ -704,12 +682,15 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         LossyImageCompressionMethod = copy.LossyImageCompressionMethod;
         IconImageSequence = copy.IconImageSequence;
         PresentationLUTShape = copy.PresentationLUTShape;
-        IrradiationEventUID = copy.IrradiationEventUID;
         RealWorldValueMappingSequence = copy.RealWorldValueMappingSequence;
+        ImageLaterality = copy.ImageLaterality;
+        AnatomicRegionSequence = copy.AnatomicRegionSequence;
+        PrimaryAnatomicStructureSequence = copy.PrimaryAnatomicStructureSequence;
         PixelSpacing = copy.PixelSpacing;
         ImageOrientationPatient = copy.ImageOrientationPatient;
         ImagePositionPatient = copy.ImagePositionPatient;
         SliceThickness = copy.SliceThickness;
+        SpacingBetweenSlices = copy.SpacingBetweenSlices;
         SliceLocation = copy.SliceLocation;
         Rows = copy.Rows;
         Columns = copy.Columns;
@@ -728,28 +709,12 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PixelData = copy.PixelData;
         PixelDataProviderURL = copy.PixelDataProviderURL;
         PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit;
+        ExtendedOffsetTable = copy.ExtendedOffsetTable;
+        ExtendedOffsetTableLengths = copy.ExtendedOffsetTableLengths;
         NumberOfFrames = copy.NumberOfFrames;
         FrameIncrementPointer = copy.FrameIncrementPointer;
         StereoPairsPresent = copy.StereoPairsPresent;
-        OverlayRows = copy.OverlayRows;
-        OverlayColumns = copy.OverlayColumns;
-        OverlayType = copy.OverlayType;
-        OverlayOrigin = copy.OverlayOrigin;
-        OverlayBitsAllocated = copy.OverlayBitsAllocated;
-        OverlayBitPosition = copy.OverlayBitPosition;
-        OverlayData = copy.OverlayData;
-        OverlayDescription = copy.OverlayDescription;
-        OverlaySubtype = copy.OverlaySubtype;
-        OverlayLabel = copy.OverlayLabel;
-        ROIArea = copy.ROIArea;
-        ROIMean = copy.ROIMean;
-        ROIStandardDeviation = copy.ROIStandardDeviation;
-        NumberOfFramesInOverlay = copy.NumberOfFramesInOverlay;
-        ImageFrameOrigin = copy.ImageFrameOrigin;
-        ModalityLUTSequence = copy.ModalityLUTSequence;
-        RescaleIntercept = copy.RescaleIntercept;
-        RescaleSlope = copy.RescaleSlope;
-        RescaleType = copy.RescaleType;
+        EncapsulatedPixelDataValueTotalLength = copy.EncapsulatedPixelDataValueTotalLength;
         SamplesPerPixel = copy.SamplesPerPixel;
         PhotometricInterpretation = copy.PhotometricInterpretation;
         BitsAllocated = copy.BitsAllocated;
@@ -763,6 +728,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         SpatialTransformOfDose = copy.SpatialTransformOfDose;
         ReferencedSpatialRegistrationSequence = copy.ReferencedSpatialRegistrationSequence;
         InstanceNumber = copy.InstanceNumber;
+        EntityLongLabel = copy.EntityLongLabel;
         DoseComment = copy.DoseComment;
         NormalizationPoint = copy.NormalizationPoint;
         DoseSummationType = copy.DoseSummationType;
@@ -773,20 +739,11 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         TissueHeterogeneityCorrection = copy.TissueHeterogeneityCorrection;
         DerivationCodeSequence = copy.DerivationCodeSequence;
         ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
+        PlanOverviewSequence = copy.PlanOverviewSequence;
         ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence;
         DVHNormalizationPoint = copy.DVHNormalizationPoint;
         DVHNormalizationDoseValue = copy.DVHNormalizationDoseValue;
         DVHSequence = copy.DVHSequence;
-        StructureSetLabel = copy.StructureSetLabel;
-        StructureSetName = copy.StructureSetName;
-        StructureSetDescription = copy.StructureSetDescription;
-        StructureSetDate = copy.StructureSetDate;
-        StructureSetTime = copy.StructureSetTime;
-        ReferencedFrameOfReferenceSequence = copy.ReferencedFrameOfReferenceSequence;
-        StructureSetROISequence = copy.StructureSetROISequence;
-        PredecessorStructureSetSequence = copy.PredecessorStructureSetSequence;
-        ROIContourSequence = copy.ROIContourSequence;
-        RTDoseROISequence = copy.RTDoseROISequence;
         SOPClassUID = copy.SOPClassUID;
         SOPInstanceUID = copy.SOPInstanceUID;
         SpecificCharacterSet = copy.SpecificCharacterSet;
@@ -815,6 +772,10 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
         PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
+        InstanceOriginStatus = copy.InstanceOriginStatus;
+        BarcodeValue = copy.BarcodeValue;
+        ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence;
+        ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
         FrameExtractionSequence = copy.FrameExtractionSequence;
@@ -830,6 +791,7 @@ void DRTDoseIOD::clear()
     PatientID.clear();
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
+    TypeOfPatientID.clear();
     PatientBirthDate.clear();
     PatientBirthDateInAlternativeCalendar.clear();
     PatientDeathDateInAlternativeCalendar.clear();
@@ -886,6 +848,7 @@ void DRTDoseIOD::clear()
     PhysiciansOfRecordIdentificationSequence.clear();
     NameOfPhysiciansReadingStudy.clear();
     PhysiciansReadingStudyIdentificationSequence.clear();
+    RequestingService.clear();
     RequestingServiceCodeSequence.clear();
     ReferencedStudySequence.clear();
     ProcedureCodeSequence.clear();
@@ -909,12 +872,15 @@ void DRTDoseIOD::clear()
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
     IssuerOfAdmissionIDSequence.clear();
+    ReasonForVisit.clear();
+    ReasonForVisitCodeSequence.clear();
     ServiceEpisodeID.clear();
     IssuerOfServiceEpisodeIDSequence.clear();
     ServiceEpisodeDescription.clear();
     PatientSexNeutered.clear();
     ClinicalTrialTimePointID.clear();
     ClinicalTrialTimePointDescription.clear();
+    ClinicalTrialTimePointTypeCodeSequence.clear();
     LongitudinalTemporalOffsetFromEvent.clear();
     LongitudinalTemporalEventType.clear();
     ConsentForClinicalTrialUseSequence.clear();
@@ -937,6 +903,7 @@ void DRTDoseIOD::clear()
     PerformedProcedureStepDescription.clear();
     PerformedProtocolCodeSequence.clear();
     CommentsOnThePerformedProcedureStep.clear();
+    TreatmentSessionUID.clear();
     ClinicalTrialCoordinatingCenterName.clear();
     ClinicalTrialSeriesID.clear();
     ClinicalTrialSeriesDescription.clear();
@@ -947,11 +914,14 @@ void DRTDoseIOD::clear()
     InstitutionAddress.clear();
     StationName.clear();
     InstitutionalDepartmentName.clear();
+    InstitutionalDepartmentTypeCodeSequence.clear();
     ManufacturerModelName.clear();
+    ManufacturerDeviceClassUID.clear();
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
     UDISequence.clear();
+    DeviceUID.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -961,11 +931,6 @@ void DRTDoseIOD::clear()
     ContentDate.clear();
     ContentTime.clear();
     ImageType.clear();
-    AcquisitionNumber.clear();
-    AcquisitionDate.clear();
-    AcquisitionTime.clear();
-    AcquisitionDateTime.clear();
-    ImagesInAcquisition.clear();
     ImageComments.clear();
     QualityControlImage.clear();
     BurnedInAnnotation.clear();
@@ -975,12 +940,15 @@ void DRTDoseIOD::clear()
     LossyImageCompressionMethod.clear();
     IconImageSequence.clear();
     PresentationLUTShape.clear();
-    IrradiationEventUID.clear();
     RealWorldValueMappingSequence.clear();
+    ImageLaterality.clear();
+    AnatomicRegionSequence.clear();
+    PrimaryAnatomicStructureSequence.clear();
     PixelSpacing.clear();
     ImageOrientationPatient.clear();
     ImagePositionPatient.clear();
     SliceThickness.clear();
+    SpacingBetweenSlices.clear();
     SliceLocation.clear();
     SamplesPerPixel.clear();
     PhotometricInterpretation.clear();
@@ -1005,32 +973,17 @@ void DRTDoseIOD::clear()
     PixelData.clear();
     PixelDataProviderURL.clear();
     PixelPaddingRangeLimit.clear();
+    ExtendedOffsetTable.clear();
+    ExtendedOffsetTableLengths.clear();
     NumberOfFrames.clear();
     FrameIncrementPointer.clear();
     StereoPairsPresent.clear();
-    OverlayRows.clear();
-    OverlayColumns.clear();
-    OverlayType.clear();
-    OverlayOrigin.clear();
-    OverlayBitsAllocated.clear();
-    OverlayBitPosition.clear();
-    OverlayData.clear();
-    OverlayDescription.clear();
-    OverlaySubtype.clear();
-    OverlayLabel.clear();
-    ROIArea.clear();
-    ROIMean.clear();
-    ROIStandardDeviation.clear();
-    NumberOfFramesInOverlay.clear();
-    ImageFrameOrigin.clear();
-    ModalityLUTSequence.clear();
-    RescaleIntercept.clear();
-    RescaleSlope.clear();
-    RescaleType.clear();
+    EncapsulatedPixelDataValueTotalLength.clear();
     DoseUnits.clear();
     DoseType.clear();
     SpatialTransformOfDose.clear();
     ReferencedSpatialRegistrationSequence.clear();
+    EntityLongLabel.clear();
     DoseComment.clear();
     NormalizationPoint.clear();
     DoseSummationType.clear();
@@ -1041,20 +994,11 @@ void DRTDoseIOD::clear()
     TissueHeterogeneityCorrection.clear();
     DerivationCodeSequence.clear();
     ReferencedInstanceSequence.clear();
+    PlanOverviewSequence.clear();
     ReferencedStructureSetSequence.clear();
     DVHNormalizationPoint.clear();
     DVHNormalizationDoseValue.clear();
     DVHSequence.clear();
-    StructureSetLabel.clear();
-    StructureSetName.clear();
-    StructureSetDescription.clear();
-    StructureSetDate.clear();
-    StructureSetTime.clear();
-    ReferencedFrameOfReferenceSequence.clear();
-    StructureSetROISequence.clear();
-    PredecessorStructureSetSequence.clear();
-    ROIContourSequence.clear();
-    RTDoseROISequence.clear();
     SOPClassUID.clear();
     SOPInstanceUID.clear();
     SpecificCharacterSet.clear();
@@ -1083,6 +1027,10 @@ void DRTDoseIOD::clear()
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
     PrivateDataElementCharacteristicsSequence.clear();
+    InstanceOriginStatus.clear();
+    BarcodeValue.clear();
+    ReferencedDefinedProtocolSequence.clear();
+    ReferencedPerformedProtocolSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
     FrameExtractionSequence.clear();
@@ -1143,11 +1091,14 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule");
+        InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
         UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -1159,11 +1110,6 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         // getAndCheckElementFromDataset(dataset, ContentDate, "1", "2C", "GeneralImageModule");
         // getAndCheckElementFromDataset(dataset, ContentTime, "1", "2C", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ImageType, "2-n", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionNumber, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ImageComments, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, QualityControlImage, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, BurnedInAnnotation, "1", "3", "GeneralImageModule");
@@ -1173,8 +1119,10 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, LossyImageCompressionMethod, "1-n", "3", "GeneralImageModule");
         IconImageSequence.read(dataset, "1-n", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, PresentationLUTShape, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, IrradiationEventUID, "1-n", "3", "GeneralImageModule");
         RealWorldValueMappingSequence.read(dataset, "1-n", "3", "GeneralImageModule");
+        getAndCheckElementFromDataset(dataset, ImageLaterality, "1", "3", "GeneralImageModule");
+        AnatomicRegionSequence.read(dataset, "1-n", "3", "GeneralImageModule");
+        PrimaryAnatomicStructureSequence.read(dataset, "1-n", "3", "GeneralImageModule");
 
         // --- ImagePlaneModule (C) ---
         if (dataset.tagExists(DCM_PixelSpacing) ||
@@ -1186,6 +1134,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, ImageOrientationPatient, "6", "1", "ImagePlaneModule");
             getAndCheckElementFromDataset(dataset, ImagePositionPatient, "3", "1", "ImagePlaneModule");
             getAndCheckElementFromDataset(dataset, SliceThickness, "1", "2", "ImagePlaneModule");
+            getAndCheckElementFromDataset(dataset, SpacingBetweenSlices, "1", "3", "ImagePlaneModule");
             getAndCheckElementFromDataset(dataset, SliceLocation, "1", "3", "ImagePlaneModule");
         }
 
@@ -1216,6 +1165,8 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, PixelDataProviderURL, "1", "1C", "ImagePixelModule");
             getAndCheckElementFromDataset(dataset, PixelPaddingRangeLimit, "1", "1C", "ImagePixelModule");
+            getAndCheckElementFromDataset(dataset, ExtendedOffsetTable, "1", "3", "ImagePixelModule");
+            getAndCheckElementFromDataset(dataset, ExtendedOffsetTableLengths, "1", "1C", "ImagePixelModule");
         }
 
         // --- MultiFrameModule (C) ---
@@ -1225,45 +1176,9 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule");
+            getAndCheckElementFromDataset(dataset, EncapsulatedPixelDataValueTotalLength, "1", "3", "MultiFrameModule");
         }
 
-        // --- OverlayPlaneModule (U) ---
-        if (dataset.tagExists(DCM_OverlayRows) ||
-            dataset.tagExists(DCM_OverlayColumns) ||
-            dataset.tagExists(DCM_OverlayType) ||
-            dataset.tagExists(DCM_OverlayOrigin) ||
-            dataset.tagExists(DCM_OverlayBitsAllocated) ||
-            dataset.tagExists(DCM_OverlayBitPosition) ||
-            dataset.tagExists(DCM_OverlayData))
-        {
-            getAndCheckElementFromDataset(dataset, OverlayRows, "1", "1", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayColumns, "1", "1", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayType, "1", "1", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayOrigin, "2", "1", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayBitsAllocated, "1", "1", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayBitPosition, "1", "1", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayData, "1", "1", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayDescription, "1", "3", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlaySubtype, "1", "3", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, OverlayLabel, "1", "3", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, ROIArea, "1", "3", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, ROIMean, "1", "3", "OverlayPlaneModule");
-            getAndCheckElementFromDataset(dataset, ROIStandardDeviation, "1", "3", "OverlayPlaneModule");
-        }
-
-        // --- MultiFrameOverlayModule (U) ---
-        if (dataset.tagExists(DCM_NumberOfFramesInOverlay))
-        {
-            getAndCheckElementFromDataset(dataset, NumberOfFramesInOverlay, "1", "1", "MultiFrameOverlayModule");
-            getAndCheckElementFromDataset(dataset, ImageFrameOrigin, "1", "3", "MultiFrameOverlayModule");
-        }
-
-        // --- ModalityLUTModule (U) ---
-        ModalityLUTSequence.read(dataset, "1-n", "1C", "ModalityLUTModule");
-        getAndCheckElementFromDataset(dataset, RescaleIntercept, "1", "1C", "ModalityLUTModule");
-        getAndCheckElementFromDataset(dataset, RescaleSlope, "1", "1C", "ModalityLUTModule");
-        getAndCheckElementFromDataset(dataset, RescaleType, "1", "1C", "ModalityLUTModule");
-
         // --- RTDoseModule (M) ---
         getAndCheckElementFromDataset(dataset, SamplesPerPixel, "1", "1C", "RTDoseModule");
         getAndCheckElementFromDataset(dataset, PhotometricInterpretation, "1", "1C", "RTDoseModule");
@@ -1278,6 +1193,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, SpatialTransformOfDose, "1", "3", "RTDoseModule");
         ReferencedSpatialRegistrationSequence.read(dataset, "1-n", "2C", "RTDoseModule");
         getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "RTDoseModule");
+        getAndCheckElementFromDataset(dataset, EntityLongLabel, "1", "3", "RTDoseModule");
         getAndCheckElementFromDataset(dataset, DoseComment, "1", "3", "RTDoseModule");
         getAndCheckElementFromDataset(dataset, NormalizationPoint, "3", "3", "RTDoseModule");
         getAndCheckElementFromDataset(dataset, DoseSummationType, "1", "1", "RTDoseModule");
@@ -1288,6 +1204,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, TissueHeterogeneityCorrection, "1-3", "3", "RTDoseModule");
         DerivationCodeSequence.read(dataset, "1-n", "3", "RTDoseModule");
         ReferencedInstanceSequence.read(dataset, "1-n", "3", "RTDoseModule");
+        PlanOverviewSequence.read(dataset, "1-n", "1C", "RTDoseModule");
 
         // --- RTDVHModule (U) ---
         if (dataset.tagExists(DCM_ReferencedStructureSetSequence) ||
@@ -1299,35 +1216,6 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
             DVHSequence.read(dataset, "1-n", "1", "RTDVHModule");
         }
 
-        // --- StructureSetModule (C) ---
-        if (dataset.tagExists(DCM_StructureSetLabel) ||
-            dataset.tagExists(DCM_StructureSetDate) ||
-            dataset.tagExists(DCM_StructureSetTime) ||
-            dataset.tagExists(DCM_StructureSetROISequence))
-        {
-            getAndCheckElementFromDataset(dataset, StructureSetLabel, "1", "1", "StructureSetModule");
-            getAndCheckElementFromDataset(dataset, StructureSetName, "1", "3", "StructureSetModule");
-            getAndCheckElementFromDataset(dataset, StructureSetDescription, "1", "3", "StructureSetModule");
-            // getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "3", "StructureSetModule");
-            getAndCheckElementFromDataset(dataset, StructureSetDate, "1", "2", "StructureSetModule");
-            getAndCheckElementFromDataset(dataset, StructureSetTime, "1", "2", "StructureSetModule");
-            ReferencedFrameOfReferenceSequence.read(dataset, "1-n", "3", "StructureSetModule");
-            StructureSetROISequence.read(dataset, "1-n", "1", "StructureSetModule");
-            PredecessorStructureSetSequence.read(dataset, "1-n", "3", "StructureSetModule");
-        }
-
-        // --- ROIContourModule (C) ---
-        if (dataset.tagExists(DCM_ROIContourSequence))
-        {
-            ROIContourSequence.read(dataset, "1-n", "1", "ROIContourModule");
-        }
-
-        // --- RTDoseROIModule (C) ---
-        if (dataset.tagExists(DCM_RTDoseROISequence))
-        {
-            RTDoseROISequence.read(dataset, "1-n", "1", "RTDoseROIModule");
-        }
-
         // --- SOPCommonModule (M) ---
         getAndCheckElementFromDataset(dataset, SOPClassUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
@@ -1358,6 +1246,10 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
         PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule");
+        ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
+        ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -1382,6 +1274,7 @@ OFCondition DRTDoseIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
@@ -1458,6 +1351,7 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset)
         PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule");
         PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule");
         RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1483,6 +1377,8 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
         IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule");
+        ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule");
         IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule");
@@ -1493,6 +1389,7 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule");
+            ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule");
             ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
@@ -1528,6 +1425,7 @@ OFCondition DRTDoseIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule");
         PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName))
@@ -1555,6 +1453,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
@@ -1618,6 +1517,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule");
         if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule");
         if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1645,6 +1545,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule");
+            if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule");
@@ -1656,6 +1558,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule");
+            if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule");
             if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
@@ -1681,6 +1584,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/))
@@ -1700,11 +1604,14 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
         if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1718,11 +1625,6 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             // addElementToDataset(result, dataset, new DcmDate(ContentDate), "1", "2C", "GeneralImageModule");
             // addElementToDataset(result, dataset, new DcmTime(ContentTime), "1", "2C", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmCodeString(ImageType), "2-n", "3", "GeneralImageModule");
-            addElementToDataset(result, dataset, new DcmIntegerString(AcquisitionNumber), "1", "3", "GeneralImageModule");
-            addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralImageModule");
-            addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralImageModule");
-            addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralImageModule");
-            addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmLongText(ImageComments), "1", "3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmCodeString(QualityControlImage), "1", "3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmCodeString(BurnedInAnnotation), "1", "3", "GeneralImageModule");
@@ -1732,8 +1634,10 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmCodeString(LossyImageCompressionMethod), "1-n", "3", "GeneralImageModule");
             if (result.good()) result = IconImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
             addElementToDataset(result, dataset, new DcmCodeString(PresentationLUTShape), "1", "3", "GeneralImageModule");
-            addElementToDataset(result, dataset, new DcmUniqueIdentifier(IrradiationEventUID), "1-n", "3", "GeneralImageModule");
             if (result.good()) result = RealWorldValueMappingSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
+            addElementToDataset(result, dataset, new DcmCodeString(ImageLaterality), "1", "3", "GeneralImageModule");
+            if (result.good()) result = AnatomicRegionSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
+            if (result.good()) result = PrimaryAnatomicStructureSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
         }
 
         // --- ImagePlaneModule (C) ---
@@ -1743,6 +1647,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmDecimalString(ImageOrientationPatient), "6", "1", "ImagePlaneModule");
             addElementToDataset(result, dataset, new DcmDecimalString(ImagePositionPatient), "3", "1", "ImagePlaneModule");
             addElementToDataset(result, dataset, new DcmDecimalString(SliceThickness), "1", "2", "ImagePlaneModule");
+            addElementToDataset(result, dataset, new DcmDecimalString(SpacingBetweenSlices), "1", "3", "ImagePlaneModule");
             addElementToDataset(result, dataset, new DcmDecimalString(SliceLocation), "1", "3", "ImagePlaneModule");
         }
 
@@ -1772,6 +1677,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmUniversalResourceIdentifierOrLocator(PixelDataProviderURL), "1", "1C", "ImagePixelModule");
             addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingRangeLimit), "1", "1C", "ImagePixelModule");
+            addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTable), "1", "3", "ImagePixelModule");
+            addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTableLengths), "1", "1C", "ImagePixelModule");
         }
 
         // --- MultiFrameModule (C) ---
@@ -1780,40 +1687,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule");
-        }
-
-        // --- OverlayPlaneModule (U) ---
-        if (isOverlayPlaneModulePresent(OFFalse /*complete*/))
-        {
-            addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayRows), "1", "1", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayColumns), "1", "1", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmCodeString(OverlayType), "1", "1", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmSignedShort(OverlayOrigin), "2", "1", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayBitsAllocated), "1", "1", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmUnsignedShort(OverlayBitPosition), "1", "1", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmOtherByteOtherWord(OverlayData), "1", "1", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmLongString(OverlayDescription), "1", "3", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmLongString(OverlaySubtype), "1", "3", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmLongString(OverlayLabel), "1", "3", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmIntegerString(ROIArea), "1", "3", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmDecimalString(ROIMean), "1", "3", "OverlayPlaneModule");
-            addElementToDataset(result, dataset, new DcmDecimalString(ROIStandardDeviation), "1", "3", "OverlayPlaneModule");
-        }
-
-        // --- MultiFrameOverlayModule (U) ---
-        if (isMultiFrameOverlayModulePresent(OFFalse /*complete*/))
-        {
-            addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFramesInOverlay), "1", "1", "MultiFrameOverlayModule");
-            addElementToDataset(result, dataset, new DcmUnsignedShort(ImageFrameOrigin), "1", "3", "MultiFrameOverlayModule");
-        }
-
-        // --- ModalityLUTModule (U) ---
-        if (isModalityLUTModulePresent(OFFalse /*complete*/))
-        {
-            if (result.good()) result = ModalityLUTSequence.write(dataset, "1-n" ,"1C", "ModalityLUTModule");
-            addElementToDataset(result, dataset, new DcmDecimalString(RescaleIntercept), "1", "1C", "ModalityLUTModule");
-            addElementToDataset(result, dataset, new DcmDecimalString(RescaleSlope), "1", "1C", "ModalityLUTModule");
-            addElementToDataset(result, dataset, new DcmLongString(RescaleType), "1", "1C", "ModalityLUTModule");
+            addElementToDataset(result, dataset, new DcmUnsigned64bitVeryLong(EncapsulatedPixelDataValueTotalLength), "1", "3", "MultiFrameModule");
         }
 
         // --- RTDoseModule (M) ---
@@ -1830,6 +1704,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(SpatialTransformOfDose), "1", "3", "RTDoseModule");
         if (result.good()) result = ReferencedSpatialRegistrationSequence.write(dataset, "1-n" ,"2C", "RTDoseModule");
         addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "RTDoseModule");
+        addElementToDataset(result, dataset, new DcmLongString(EntityLongLabel), "1", "3", "RTDoseModule");
         addElementToDataset(result, dataset, new DcmLongString(DoseComment), "1", "3", "RTDoseModule");
         addElementToDataset(result, dataset, new DcmDecimalString(NormalizationPoint), "3", "3", "RTDoseModule");
         addElementToDataset(result, dataset, new DcmCodeString(DoseSummationType), "1", "1", "RTDoseModule");
@@ -1840,6 +1715,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(TissueHeterogeneityCorrection), "1-3", "3", "RTDoseModule");
         if (result.good()) result = DerivationCodeSequence.write(dataset, "1-n" ,"3", "RTDoseModule");
         if (result.good()) result = ReferencedInstanceSequence.write(dataset, "1-n" ,"3", "RTDoseModule");
+        if (result.good()) result = PlanOverviewSequence.write(dataset, "1-n" ,"1C", "RTDoseModule");
 
         // --- RTDVHModule (U) ---
         if (isRTDVHModulePresent(OFFalse /*complete*/))
@@ -1850,32 +1726,6 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
             if (result.good()) result = DVHSequence.write(dataset, "1-n" ,"1", "RTDVHModule");
         }
 
-        // --- StructureSetModule (C) ---
-        if (isStructureSetModulePresent(OFFalse /*complete*/))
-        {
-            addElementToDataset(result, dataset, new DcmShortString(StructureSetLabel), "1", "1", "StructureSetModule");
-            addElementToDataset(result, dataset, new DcmLongString(StructureSetName), "1", "3", "StructureSetModule");
-            addElementToDataset(result, dataset, new DcmShortText(StructureSetDescription), "1", "3", "StructureSetModule");
-            // addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "3", "StructureSetModule");
-            addElementToDataset(result, dataset, new DcmDate(StructureSetDate), "1", "2", "StructureSetModule");
-            addElementToDataset(result, dataset, new DcmTime(StructureSetTime), "1", "2", "StructureSetModule");
-            if (result.good()) result = ReferencedFrameOfReferenceSequence.write(dataset, "1-n" ,"3", "StructureSetModule");
-            if (result.good()) result = StructureSetROISequence.write(dataset, "1-n" ,"1", "StructureSetModule");
-            if (result.good()) result = PredecessorStructureSetSequence.write(dataset, "1-n" ,"3", "StructureSetModule");
-        }
-
-        // --- ROIContourModule (C) ---
-        if (isROIContourModulePresent(OFFalse /*complete*/))
-        {
-            if (result.good()) result = ROIContourSequence.write(dataset, "1-n" ,"1", "ROIContourModule");
-        }
-
-        // --- RTDoseROIModule (C) ---
-        if (isRTDoseROIModulePresent(OFFalse /*complete*/))
-        {
-            if (result.good()) result = RTDoseROISequence.write(dataset, "1-n" ,"1", "RTDoseROIModule");
-        }
-
         // --- SOPCommonModule (M) ---
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPClassUID), "1", "1", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmUniqueIdentifier(SOPInstanceUID), "1", "1", "SOPCommonModule");
@@ -1906,6 +1756,10 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
         if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule");
+        if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
+        if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1969,6 +1823,8 @@ OFBool DRTDoseIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
            !IssuerOfAdmissionIDSequence.isEmpty() ||
+           !ReasonForVisit.isEmpty() ||
+           !ReasonForVisitCodeSequence.isEmpty() ||
            !ServiceEpisodeID.isEmpty() ||
            !IssuerOfServiceEpisodeIDSequence.isEmpty() ||
            !ServiceEpisodeDescription.isEmpty() ||
@@ -1981,6 +1837,7 @@ OFBool DRTDoseIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete*/)
     /* check whether at least one attribute is present */
     return !ClinicalTrialTimePointID.isEmpty() ||
            !ClinicalTrialTimePointDescription.isEmpty() ||
+           !ClinicalTrialTimePointTypeCodeSequence.isEmpty() ||
            !LongitudinalTemporalOffsetFromEvent.isEmpty() ||
            !LongitudinalTemporalEventType.isEmpty() ||
            !ConsentForClinicalTrialUseSequence.isEmpty();
@@ -2001,11 +1858,6 @@ OFBool DRTDoseIOD::isGeneralImageModulePresent(const OFBool /*complete*/)
     /* check whether at least one attribute is present */
     return !PatientOrientation.isEmpty() ||
            !ImageType.isEmpty() ||
-           !AcquisitionNumber.isEmpty() ||
-           !AcquisitionDate.isEmpty() ||
-           !AcquisitionTime.isEmpty() ||
-           !AcquisitionDateTime.isEmpty() ||
-           !ImagesInAcquisition.isEmpty() ||
            !ImageComments.isEmpty() ||
            !QualityControlImage.isEmpty() ||
            !BurnedInAnnotation.isEmpty() ||
@@ -2015,8 +1867,10 @@ OFBool DRTDoseIOD::isGeneralImageModulePresent(const OFBool /*complete*/)
            !LossyImageCompressionMethod.isEmpty() ||
            !IconImageSequence.isEmpty() ||
            !PresentationLUTShape.isEmpty() ||
-           !IrradiationEventUID.isEmpty() ||
-           !RealWorldValueMappingSequence.isEmpty();
+           !RealWorldValueMappingSequence.isEmpty() ||
+           !ImageLaterality.isEmpty() ||
+           !AnatomicRegionSequence.isEmpty() ||
+           !PrimaryAnatomicStructureSequence.isEmpty();
 }
 
 
@@ -2034,6 +1888,7 @@ OFBool DRTDoseIOD::isImagePlaneModulePresent(const OFBool complete)
                !ImageOrientationPatient.isEmpty() ||
                !ImagePositionPatient.isEmpty() ||
                !SliceThickness.isEmpty() ||
+               !SpacingBetweenSlices.isEmpty() ||
                !SliceLocation.isEmpty();
     }
 }
@@ -2064,7 +1919,9 @@ OFBool DRTDoseIOD::isImagePixelModulePresent(const OFBool complete)
                !ColorSpace.isEmpty() ||
                !PixelData.isEmpty() ||
                !PixelDataProviderURL.isEmpty() ||
-               !PixelPaddingRangeLimit.isEmpty();
+               !PixelPaddingRangeLimit.isEmpty() ||
+               !ExtendedOffsetTable.isEmpty() ||
+               !ExtendedOffsetTableLengths.isEmpty();
     }
 }
 
@@ -2080,66 +1937,12 @@ OFBool DRTDoseIOD::isMultiFrameModulePresent(const OFBool complete)
         /* check whether at least one attribute is present */
         return !NumberOfFrames.isEmpty() ||
                !FrameIncrementPointer.isEmpty() ||
-               !StereoPairsPresent.isEmpty();
-    }
-}
-
-
-OFBool DRTDoseIOD::isOverlayPlaneModulePresent(const OFBool complete)
-{
-    if (complete)
-    {
-        /* check whether all mandatory attributes are present */
-        return !OverlayRows.isEmpty() &&
-               !OverlayColumns.isEmpty() &&
-               !OverlayType.isEmpty() &&
-               !OverlayOrigin.isEmpty() &&
-               !OverlayBitsAllocated.isEmpty() &&
-               !OverlayBitPosition.isEmpty() &&
-               !OverlayData.isEmpty();
-    } else {
-        /* check whether at least one attribute is present */
-        return !OverlayRows.isEmpty() ||
-               !OverlayColumns.isEmpty() ||
-               !OverlayType.isEmpty() ||
-               !OverlayOrigin.isEmpty() ||
-               !OverlayBitsAllocated.isEmpty() ||
-               !OverlayBitPosition.isEmpty() ||
-               !OverlayData.isEmpty() ||
-               !OverlayDescription.isEmpty() ||
-               !OverlaySubtype.isEmpty() ||
-               !OverlayLabel.isEmpty() ||
-               !ROIArea.isEmpty() ||
-               !ROIMean.isEmpty() ||
-               !ROIStandardDeviation.isEmpty();
+               !StereoPairsPresent.isEmpty() ||
+               !EncapsulatedPixelDataValueTotalLength.isEmpty();
     }
 }
 
 
-OFBool DRTDoseIOD::isMultiFrameOverlayModulePresent(const OFBool complete)
-{
-    if (complete)
-    {
-        /* check whether all mandatory attributes are present */
-        return !NumberOfFramesInOverlay.isEmpty();
-    } else {
-        /* check whether at least one attribute is present */
-        return !NumberOfFramesInOverlay.isEmpty() ||
-               !ImageFrameOrigin.isEmpty();
-    }
-}
-
-
-OFBool DRTDoseIOD::isModalityLUTModulePresent(const OFBool /*complete*/)
-{
-    /* check whether at least one attribute is present */
-    return !ModalityLUTSequence.isEmpty() ||
-           !RescaleIntercept.isEmpty() ||
-           !RescaleSlope.isEmpty() ||
-           !RescaleType.isEmpty();
-}
-
-
 OFBool DRTDoseIOD::isRTDVHModulePresent(const OFBool complete)
 {
     if (complete)
@@ -2157,41 +1960,6 @@ OFBool DRTDoseIOD::isRTDVHModulePresent(const OFBool complete)
 }
 
 
-OFBool DRTDoseIOD::isStructureSetModulePresent(const OFBool complete)
-{
-    if (complete)
-    {
-        /* check whether all mandatory attributes are present */
-        return !StructureSetLabel.isEmpty() &&
-               !StructureSetROISequence.isEmpty();
-    } else {
-        /* check whether at least one attribute is present */
-        return !StructureSetLabel.isEmpty() ||
-               !StructureSetName.isEmpty() ||
-               !StructureSetDescription.isEmpty() ||
-               !StructureSetDate.isEmpty() ||
-               !StructureSetTime.isEmpty() ||
-               !ReferencedFrameOfReferenceSequence.isEmpty() ||
-               !StructureSetROISequence.isEmpty() ||
-               !PredecessorStructureSetSequence.isEmpty();
-    }
-}
-
-
-OFBool DRTDoseIOD::isROIContourModulePresent(const OFBool /*complete*/)
-{
-    /* check whether at least one attribute is present */
-    return !ROIContourSequence.isEmpty();
-}
-
-
-OFBool DRTDoseIOD::isRTDoseROIModulePresent(const OFBool /*complete*/)
-{
-    /* check whether at least one attribute is present */
-    return !RTDoseROISequence.isEmpty();
-}
-
-
 OFBool DRTDoseIOD::isCommonInstanceReferenceModulePresent(const OFBool /*complete*/)
 {
     /* check whether at least one attribute is present */
@@ -2213,36 +1981,6 @@ OFCondition DRTDoseIOD::getAccessionNumber(OFString &value, const signed long po
 }
 
 
-OFCondition DRTDoseIOD::getAcquisitionDate(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(AcquisitionDate, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getAcquisitionDateTime(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(AcquisitionDateTime, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getAcquisitionNumber(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(AcquisitionNumber, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getAcquisitionNumber(Sint32 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmIntegerString &, AcquisitionNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getAcquisitionTime(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(AcquisitionTime, value, pos);
-}
-
-
 OFCondition DRTDoseIOD::getAdditionalPatientHistory(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(AdditionalPatientHistory, value, pos);
@@ -2273,6 +2011,12 @@ OFCondition DRTDoseIOD::getAuthorizationEquipmentCertificationNumber(OFString &v
 }
 
 
+OFCondition DRTDoseIOD::getBarcodeValue(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(BarcodeValue, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getBitsAllocated(Uint16 &value, const unsigned long pos) const
 {
     return OFconst_cast(DcmUnsignedShort &, BitsAllocated).getUint16(value, pos);
@@ -2486,6 +2230,12 @@ OFCondition DRTDoseIOD::getDeviceSerialNumber(OFString &value, const signed long
 }
 
 
+OFCondition DRTDoseIOD::getDeviceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getDoseComment(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(DoseComment, value, pos);
@@ -2522,12 +2272,54 @@ OFCondition DRTDoseIOD::getDoseUnits(OFString &value, const signed long pos) con
 }
 
 
+OFCondition DRTDoseIOD::getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsigned64bitVeryLong &, EncapsulatedPixelDataValueTotalLength).getUint64(value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getEntityLongLabel(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(EntityLongLabel, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getEthnicGroup(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EthnicGroup, value, pos);
 }
 
 
+OFCondition DRTDoseIOD::getExtendedOffsetTable(Uint64 *&value, unsigned long *count) const
+{
+    OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getUint64Array(value);
+    /* set optional count parameter */
+    if (count != NULL)
+    {
+        if (result.good())
+            *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getLength() / sizeof(Uint64);
+        else
+            *count = 0;
+    }
+    return result;
+}
+
+
+OFCondition DRTDoseIOD::getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count) const
+{
+    OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getUint64Array(value);
+    /* set optional count parameter */
+    if (count != NULL)
+    {
+        if (result.good())
+            *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getLength() / sizeof(Uint64);
+        else
+            *count = 0;
+    }
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::getFrameIncrementPointer(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(FrameIncrementPointer, value, pos);
@@ -2612,9 +2404,9 @@ OFCondition DRTDoseIOD::getImageComments(OFString &value, const signed long pos)
 }
 
 
-OFCondition DRTDoseIOD::getImageFrameOrigin(Uint16 &value, const unsigned long pos) const
+OFCondition DRTDoseIOD::getImageLaterality(OFString &value, const signed long pos) const
 {
-    return OFconst_cast(DcmUnsignedShort &, ImageFrameOrigin).getUint16(value, pos);
+    return getStringValueFromElement(ImageLaterality, value, pos);
 }
 
 
@@ -2660,18 +2452,6 @@ OFCondition DRTDoseIOD::getImageType(OFString &value, const signed long pos) con
 }
 
 
-OFCondition DRTDoseIOD::getImagesInAcquisition(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(ImagesInAcquisition, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getImagesInAcquisition(Sint32 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmIntegerString &, ImagesInAcquisition).getSint32(value, pos);
-}
-
-
 OFCondition DRTDoseIOD::getInstanceCoercionDateTime(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstanceCoercionDateTime, value, pos);
@@ -2708,6 +2488,12 @@ OFCondition DRTDoseIOD::getInstanceNumber(Sint32 &value, const unsigned long pos
 }
 
 
+OFCondition DRTDoseIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(InstanceOriginStatus, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstitutionAddress, value, pos);
@@ -2726,12 +2512,6 @@ OFCondition DRTDoseIOD::getInstitutionalDepartmentName(OFString &value, const si
 }
 
 
-OFCondition DRTDoseIOD::getIrradiationEventUID(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(IrradiationEventUID, value, pos);
-}
-
-
 OFCondition DRTDoseIOD::getIssuerOfPatientID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(IssuerOfPatientID, value, pos);
@@ -2804,6 +2584,12 @@ OFCondition DRTDoseIOD::getManufacturer(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTDoseIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getManufacturerModelName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ManufacturerModelName, value, pos);
@@ -2882,18 +2668,6 @@ OFCondition DRTDoseIOD::getNumberOfFrames(Sint32 &value, const unsigned long pos
 }
 
 
-OFCondition DRTDoseIOD::getNumberOfFramesInOverlay(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(NumberOfFramesInOverlay, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getNumberOfFramesInOverlay(Sint32 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmIntegerString &, NumberOfFramesInOverlay).getSint32(value, pos);
-}
-
-
 OFCondition DRTDoseIOD::getOccupation(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(Occupation, value, pos);
@@ -2918,60 +2692,6 @@ OFCondition DRTDoseIOD::getOtherPatientNames(OFString &value, const signed long
 }
 
 
-OFCondition DRTDoseIOD::getOverlayBitPosition(Uint16 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmUnsignedShort &, OverlayBitPosition).getUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlayBitsAllocated(Uint16 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmUnsignedShort &, OverlayBitsAllocated).getUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlayColumns(Uint16 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmUnsignedShort &, OverlayColumns).getUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlayDescription(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(OverlayDescription, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlayLabel(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(OverlayLabel, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlayOrigin(Sint16 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmSignedShort &, OverlayOrigin).getSint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlayRows(Uint16 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmUnsignedShort &, OverlayRows).getUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlaySubtype(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(OverlaySubtype, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getOverlayType(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(OverlayType, value, pos);
-}
-
-
 OFCondition DRTDoseIOD::getPatientAge(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(PatientAge, value, pos);
@@ -3248,39 +2968,9 @@ OFCondition DRTDoseIOD::getQueryRetrieveView(OFString &value, const signed long
 }
 
 
-OFCondition DRTDoseIOD::getROIArea(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(ROIArea, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getROIArea(Sint32 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmIntegerString &, ROIArea).getSint32(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getROIMean(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(ROIMean, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getROIMean(Float64 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmDecimalString &, ROIMean).getFloat64(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getROIStandardDeviation(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(ROIStandardDeviation, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getROIStandardDeviation(Float64 &value, const unsigned long pos) const
+OFCondition DRTDoseIOD::getReasonForVisit(OFString &value, const signed long pos) const
 {
-    return OFconst_cast(DcmDecimalString &, ROIStandardDeviation).getFloat64(value, pos);
+    return getStringValueFromElement(ReasonForVisit, value, pos);
 }
 
 
@@ -3323,33 +3013,9 @@ OFCondition DRTDoseIOD::getRelatedGeneralSOPClassUID(OFString &value, const sign
 }
 
 
-OFCondition DRTDoseIOD::getRescaleIntercept(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(RescaleIntercept, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getRescaleIntercept(Float64 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmDecimalString &, RescaleIntercept).getFloat64(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getRescaleSlope(OFString &value, const signed long pos) const
+OFCondition DRTDoseIOD::getRequestingService(OFString &value, const signed long pos) const
 {
-    return getStringValueFromElement(RescaleSlope, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getRescaleSlope(Float64 &value, const unsigned long pos) const
-{
-    return OFconst_cast(DcmDecimalString &, RescaleSlope).getFloat64(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getRescaleType(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(RescaleType, value, pos);
+    return getStringValueFromElement(RequestingService, value, pos);
 }
 
 
@@ -3503,6 +3169,18 @@ OFCondition DRTDoseIOD::getSoftwareVersions(OFString &value, const signed long p
 }
 
 
+OFCondition DRTDoseIOD::getSpacingBetweenSlices(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(SpacingBetweenSlices, value, pos);
+}
+
+
+OFCondition DRTDoseIOD::getSpacingBetweenSlices(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmDecimalString &, SpacingBetweenSlices).getFloat64(value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getSpatialResolution(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(SpatialResolution, value, pos);
@@ -3557,36 +3235,6 @@ OFCondition DRTDoseIOD::getStrainNomenclature(OFString &value, const signed long
 }
 
 
-OFCondition DRTDoseIOD::getStructureSetDate(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(StructureSetDate, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getStructureSetDescription(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(StructureSetDescription, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getStructureSetLabel(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(StructureSetLabel, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getStructureSetName(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(StructureSetName, value, pos);
-}
-
-
-OFCondition DRTDoseIOD::getStructureSetTime(OFString &value, const signed long pos) const
-{
-    return getStringValueFromElement(StructureSetTime, value, pos);
-}
-
-
 OFCondition DRTDoseIOD::getStudyDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StudyDate, value, pos);
@@ -3635,47 +3283,23 @@ OFCondition DRTDoseIOD::getTissueHeterogeneityCorrection(OFString &value, const
 }
 
 
-OFCondition DRTDoseIOD::setAccessionNumber(const OFString &value, const OFBool check)
+OFCondition DRTDoseIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const
 {
-    OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = AccessionNumber.putOFStringArray(value);
-    return result;
+    return getStringValueFromElement(TreatmentSessionUID, value, pos);
 }
 
 
-OFCondition DRTDoseIOD::setAcquisitionDate(const OFString &value, const OFBool check)
+OFCondition DRTDoseIOD::getTypeOfPatientID(OFString &value, const signed long pos) const
 {
-    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = AcquisitionDate.putOFStringArray(value);
-    return result;
+    return getStringValueFromElement(TypeOfPatientID, value, pos);
 }
 
 
-OFCondition DRTDoseIOD::setAcquisitionDateTime(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = AcquisitionDateTime.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setAcquisitionNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = AcquisitionNumber.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setAcquisitionTime(const OFString &value, const OFBool check)
+OFCondition DRTDoseIOD::setAccessionNumber(const OFString &value, const OFBool check)
 {
-    OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
+    OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
     if (result.good())
-        result = AcquisitionTime.putOFStringArray(value);
+        result = AccessionNumber.putOFStringArray(value);
     return result;
 }
 
@@ -3725,6 +3349,15 @@ OFCondition DRTDoseIOD::setAuthorizationEquipmentCertificationNumber(const OFStr
 }
 
 
+OFCondition DRTDoseIOD::setBarcodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = BarcodeValue.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setBitsAllocated(const Uint16 value, const unsigned long pos)
 {
     return BitsAllocated.putUint16(value, pos);
@@ -3989,6 +3622,15 @@ OFCondition DRTDoseIOD::setDeviceSerialNumber(const OFString &value, const OFBoo
 }
 
 
+OFCondition DRTDoseIOD::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = DeviceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setDoseComment(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -4034,6 +3676,21 @@ OFCondition DRTDoseIOD::setDoseUnits(const OFString &value, const OFBool check)
 }
 
 
+OFCondition DRTDoseIOD::setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos)
+{
+    return EncapsulatedPixelDataValueTotalLength.putUint64(value, pos);
+}
+
+
+OFCondition DRTDoseIOD::setEntityLongLabel(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = EntityLongLabel.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setEthnicGroup(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -4043,6 +3700,18 @@ OFCondition DRTDoseIOD::setEthnicGroup(const OFString &value, const OFBool check
 }
 
 
+OFCondition DRTDoseIOD::setExtendedOffsetTable(const Uint64 *value, const unsigned long count)
+{
+    return ExtendedOffsetTable.putUint64Array(value, count);
+}
+
+
+OFCondition DRTDoseIOD::setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count)
+{
+    return ExtendedOffsetTableLengths.putUint64Array(value, count);
+}
+
+
 OFCondition DRTDoseIOD::setFrameIncrementPointer(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmAttributeTag::checkStringValue(value, "1-n") : EC_Normal;
@@ -4112,9 +3781,12 @@ OFCondition DRTDoseIOD::setImageComments(const OFString &value, const OFBool che
 }
 
 
-OFCondition DRTDoseIOD::setImageFrameOrigin(const Uint16 value, const unsigned long pos)
+OFCondition DRTDoseIOD::setImageLaterality(const OFString &value, const OFBool check)
 {
-    return ImageFrameOrigin.putUint16(value, pos);
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = ImageLaterality.putOFStringArray(value);
+    return result;
 }
 
 
@@ -4145,15 +3817,6 @@ OFCondition DRTDoseIOD::setImageType(const OFString &value, const OFBool check)
 }
 
 
-OFCondition DRTDoseIOD::setImagesInAcquisition(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = ImagesInAcquisition.putOFStringArray(value);
-    return result;
-}
-
-
 OFCondition DRTDoseIOD::setInstanceCoercionDateTime(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
@@ -4199,6 +3862,15 @@ OFCondition DRTDoseIOD::setInstanceNumber(const OFString &value, const OFBool ch
 }
 
 
+OFCondition DRTDoseIOD::setInstanceOriginStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = InstanceOriginStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -4226,15 +3898,6 @@ OFCondition DRTDoseIOD::setInstitutionalDepartmentName(const OFString &value, co
 }
 
 
-OFCondition DRTDoseIOD::setIrradiationEventUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
-    if (result.good())
-        result = IrradiationEventUID.putOFStringArray(value);
-    return result;
-}
-
-
 OFCondition DRTDoseIOD::setIssuerOfPatientID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -4319,6 +3982,15 @@ OFCondition DRTDoseIOD::setManufacturer(const OFString &value, const OFBool chec
 }
 
 
+OFCondition DRTDoseIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ManufacturerDeviceClassUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setManufacturerModelName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -4391,15 +4063,6 @@ OFCondition DRTDoseIOD::setNumberOfFrames(const OFString &value, const OFBool ch
 }
 
 
-OFCondition DRTDoseIOD::setNumberOfFramesInOverlay(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = NumberOfFramesInOverlay.putOFStringArray(value);
-    return result;
-}
-
-
 OFCondition DRTDoseIOD::setOccupation(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -4436,72 +4099,6 @@ OFCondition DRTDoseIOD::setOtherPatientNames(const OFString &value, const OFBool
 }
 
 
-OFCondition DRTDoseIOD::setOverlayBitPosition(const Uint16 value, const unsigned long pos)
-{
-    return OverlayBitPosition.putUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::setOverlayBitsAllocated(const Uint16 value, const unsigned long pos)
-{
-    return OverlayBitsAllocated.putUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::setOverlayColumns(const Uint16 value, const unsigned long pos)
-{
-    return OverlayColumns.putUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::setOverlayDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = OverlayDescription.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setOverlayLabel(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = OverlayLabel.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setOverlayOrigin(const Sint16 value, const unsigned long pos)
-{
-    return OverlayOrigin.putSint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::setOverlayRows(const Uint16 value, const unsigned long pos)
-{
-    return OverlayRows.putUint16(value, pos);
-}
-
-
-OFCondition DRTDoseIOD::setOverlaySubtype(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = OverlaySubtype.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setOverlayType(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = OverlayType.putOFStringArray(value);
-    return result;
-}
-
-
 OFCondition DRTDoseIOD::setPatientAge(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmAgeString::checkStringValue(value, "1") : EC_Normal;
@@ -4847,29 +4444,11 @@ OFCondition DRTDoseIOD::setQueryRetrieveView(const OFString &value, const OFBool
 }
 
 
-OFCondition DRTDoseIOD::setROIArea(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = ROIArea.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setROIMean(const OFString &value, const OFBool check)
+OFCondition DRTDoseIOD::setReasonForVisit(const OFString &value, const OFBool check)
 {
-    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = ROIMean.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setROIStandardDeviation(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
     if (result.good())
-        result = ROIStandardDeviation.putOFStringArray(value);
+        result = ReasonForVisit.putOFStringArray(value);
     return result;
 }
 
@@ -4913,29 +4492,11 @@ OFCondition DRTDoseIOD::setRelatedGeneralSOPClassUID(const OFString &value, cons
 }
 
 
-OFCondition DRTDoseIOD::setRescaleIntercept(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = RescaleIntercept.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setRescaleSlope(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = RescaleSlope.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setRescaleType(const OFString &value, const OFBool check)
+OFCondition DRTDoseIOD::setRequestingService(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
     if (result.good())
-        result = RescaleType.putOFStringArray(value);
+        result = RequestingService.putOFStringArray(value);
     return result;
 }
 
@@ -5129,6 +4690,15 @@ OFCondition DRTDoseIOD::setSoftwareVersions(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTDoseIOD::setSpacingBetweenSlices(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = SpacingBetweenSlices.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setSpatialResolution(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -5201,51 +4771,6 @@ OFCondition DRTDoseIOD::setStrainNomenclature(const OFString &value, const OFBoo
 }
 
 
-OFCondition DRTDoseIOD::setStructureSetDate(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = StructureSetDate.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setStructureSetDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
-    if (result.good())
-        result = StructureSetDescription.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setStructureSetLabel(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = StructureSetLabel.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setStructureSetName(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = StructureSetName.putOFStringArray(value);
-    return result;
-}
-
-
-OFCondition DRTDoseIOD::setStructureSetTime(const OFString &value, const OFBool check)
-{
-    OFCondition result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
-    if (result.good())
-        result = StructureSetTime.putOFStringArray(value);
-    return result;
-}
-
-
 OFCondition DRTDoseIOD::setStudyDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -5318,4 +4843,22 @@ OFCondition DRTDoseIOD::setTissueHeterogeneityCorrection(const OFString &value,
 }
 
 
+OFCondition DRTDoseIOD::setTreatmentSessionUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSessionUID.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTDoseIOD::setTypeOfPatientID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TypeOfPatientID.putOFStringArray(value);
+    return result;
+}
+
+
 // end of source file
index eb7d44f834b9bb80dd89f24b929b8237ef6e99d4..6b9b3240c980caed33e8524e2ae80002dfb49a91 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -909,10 +909,12 @@ OFCondition DRTDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 40c8d5b4e18e1f938ddd795748cc366635d329e3..94b9e772bab2f2dc7c982e6322b881c1841129c6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -982,10 +982,12 @@ OFCondition DRTDeviceSequence::gotoFirstItem()
 OFCondition DRTDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index e3a9c363cf0ec24d19ba7b721e9a1a6775db11f9..3b91a40f3a6733a95f64427528da6fc2738ccb25 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoFirstItem()
 OFCondition DRTDigitalSignaturePurposeCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index dd10c99ddfd47170a184b82e49f1a8cb7e01a493..c325bffef4fe8794593215fffbf6549c031f2a7e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -467,10 +467,12 @@ OFCondition DRTDigitalSignaturesSequence::gotoFirstItem()
 OFCondition DRTDigitalSignaturesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtdtcs.cc b/dcmrt/libsrc/drtdtcs.cc
new file mode 100644 (file)
index 0000000..b7262cb
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTDeviceTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtdtcs.h"
+
+
+// --- item class ---
+
+DRTDeviceTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTDeviceTypeCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTDeviceTypeCodeSequence::Item::~Item()
+{
+}
+
+
+DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTDeviceTypeCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTDeviceTypeCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTDeviceTypeCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DeviceTypeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeviceTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "DeviceTypeCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DeviceTypeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeviceTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "DeviceTypeCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTDeviceTypeCodeSequence::DRTDeviceTypeCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTDeviceTypeCodeSequence::DRTDeviceTypeCodeSequence(const DRTDeviceTypeCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTDeviceTypeCodeSequence &DRTDeviceTypeCodeSequence::operator=(const DRTDeviceTypeCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTDeviceTypeCodeSequence::~DRTDeviceTypeCodeSequence()
+{
+    clear();
+}
+
+
+void DRTDeviceTypeCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTDeviceTypeCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTDeviceTypeCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTDeviceTypeCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTDeviceTypeCodeSequence::Item &DRTDeviceTypeCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::read(DcmItem &dataset,
+                                            const OFString &card,
+                                            const OFString &type,
+                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_DeviceTypeCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_DeviceTypeCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTDeviceTypeCodeSequence::write(DcmItem &dataset,
+                                             const OFString &card,
+                                             const OFString &type,
+                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DeviceTypeCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 5757d3d64023264026ae8cf52a93ac6139f46668..b7e842894343ad60578e8435a54b3f79d1a5c174 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -574,10 +574,12 @@ OFCondition DRTDVHSequence::gotoFirstItem()
 OFCondition DRTDVHSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 27bbfa9f45314df4b576a50a77c3f9256e234715..4863b73dfb0158e36c8abb7c026df10251d7b578 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -281,10 +281,12 @@ OFCondition DRTDVHReferencedROISequence::gotoFirstItem()
 OFCondition DRTDVHReferencedROISequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index f7b361bfd95b73f33a3cfa2ce132779932b0430d..143f0693c0b556e13f551d756cf905f4b5a44583 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -278,10 +278,12 @@ OFCondition DRTEncryptedAttributesSequence::gotoFirstItem()
 OFCondition DRTEncryptedAttributesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drteblds.cc b/dcmrt/libsrc/drteblds.cc
new file mode 100644 (file)
index 0000000..f3427aa
--- /dev/null
@@ -0,0 +1,1097 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTEnhancedRTBeamLimitingDeviceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drteblds.h"
+
+
+// --- item class ---
+
+DRTEnhancedRTBeamLimitingDeviceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    BeamModifierOrientationAngle(DCM_BeamModifierOrientationAngle),
+    DeviceAlternateIdentifier(DCM_DeviceAlternateIdentifier),
+    DeviceAlternateIdentifierFormat(DCM_DeviceAlternateIdentifierFormat),
+    DeviceAlternateIdentifierType(DCM_DeviceAlternateIdentifierType),
+    DeviceIndex(DCM_DeviceIndex),
+    DeviceLabel(DCM_DeviceLabel),
+    DeviceSerialNumber(DCM_DeviceSerialNumber),
+    DeviceTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    FixedRTBeamDelimiterDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongDeviceDescription(DCM_LongDeviceDescription),
+    Manufacturer(DCM_Manufacturer),
+    ManufacturerDeviceIdentifier(DCM_ManufacturerDeviceIdentifier),
+    ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerModelVersion(DCM_ManufacturerModelVersion),
+    ParallelRTBeamDelimiterDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    RTAccessoryDeviceSlotID(DCM_RTAccessoryDeviceSlotID),
+    RTAccessoryHolderSlotID(DCM_RTAccessoryHolderSlotID),
+    RTAccessorySlotDistance(DCM_RTAccessorySlotDistance),
+    RTBeamLimitingDeviceDistalDistance(DCM_RTBeamLimitingDeviceDistalDistance),
+    RTBeamLimitingDeviceProximalDistance(DCM_RTBeamLimitingDeviceProximalDistance),
+    ReferencedDefinedDeviceIndex(DCM_ReferencedDefinedDeviceIndex),
+    ReferencedRTAccessoryHolderDeviceIndex(DCM_ReferencedRTAccessoryHolderDeviceIndex),
+    SoftwareVersions(DCM_SoftwareVersions),
+    UDISequence(emptyDefaultItem /*emptyDefaultSequence*/)
+{
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    BeamModifierOrientationAngle(copy.BeamModifierOrientationAngle),
+    DeviceAlternateIdentifier(copy.DeviceAlternateIdentifier),
+    DeviceAlternateIdentifierFormat(copy.DeviceAlternateIdentifierFormat),
+    DeviceAlternateIdentifierType(copy.DeviceAlternateIdentifierType),
+    DeviceIndex(copy.DeviceIndex),
+    DeviceLabel(copy.DeviceLabel),
+    DeviceSerialNumber(copy.DeviceSerialNumber),
+    DeviceTypeCodeSequence(copy.DeviceTypeCodeSequence),
+    FixedRTBeamDelimiterDeviceSequence(copy.FixedRTBeamDelimiterDeviceSequence),
+    LongDeviceDescription(copy.LongDeviceDescription),
+    Manufacturer(copy.Manufacturer),
+    ManufacturerDeviceIdentifier(copy.ManufacturerDeviceIdentifier),
+    ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerModelVersion(copy.ManufacturerModelVersion),
+    ParallelRTBeamDelimiterDeviceSequence(copy.ParallelRTBeamDelimiterDeviceSequence),
+    RTAccessoryDeviceSlotID(copy.RTAccessoryDeviceSlotID),
+    RTAccessoryHolderSlotID(copy.RTAccessoryHolderSlotID),
+    RTAccessorySlotDistance(copy.RTAccessorySlotDistance),
+    RTBeamLimitingDeviceDistalDistance(copy.RTBeamLimitingDeviceDistalDistance),
+    RTBeamLimitingDeviceProximalDistance(copy.RTBeamLimitingDeviceProximalDistance),
+    ReferencedDefinedDeviceIndex(copy.ReferencedDefinedDeviceIndex),
+    ReferencedRTAccessoryHolderDeviceIndex(copy.ReferencedRTAccessoryHolderDeviceIndex),
+    SoftwareVersions(copy.SoftwareVersions),
+    UDISequence(copy.UDISequence)
+{
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::Item::~Item()
+{
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        BeamModifierOrientationAngle = copy.BeamModifierOrientationAngle;
+        DeviceAlternateIdentifier = copy.DeviceAlternateIdentifier;
+        DeviceAlternateIdentifierFormat = copy.DeviceAlternateIdentifierFormat;
+        DeviceAlternateIdentifierType = copy.DeviceAlternateIdentifierType;
+        DeviceIndex = copy.DeviceIndex;
+        DeviceLabel = copy.DeviceLabel;
+        DeviceSerialNumber = copy.DeviceSerialNumber;
+        DeviceTypeCodeSequence = copy.DeviceTypeCodeSequence;
+        FixedRTBeamDelimiterDeviceSequence = copy.FixedRTBeamDelimiterDeviceSequence;
+        LongDeviceDescription = copy.LongDeviceDescription;
+        Manufacturer = copy.Manufacturer;
+        ManufacturerDeviceIdentifier = copy.ManufacturerDeviceIdentifier;
+        ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerModelVersion = copy.ManufacturerModelVersion;
+        ParallelRTBeamDelimiterDeviceSequence = copy.ParallelRTBeamDelimiterDeviceSequence;
+        RTAccessoryDeviceSlotID = copy.RTAccessoryDeviceSlotID;
+        RTAccessoryHolderSlotID = copy.RTAccessoryHolderSlotID;
+        RTAccessorySlotDistance = copy.RTAccessorySlotDistance;
+        RTBeamLimitingDeviceDistalDistance = copy.RTBeamLimitingDeviceDistalDistance;
+        RTBeamLimitingDeviceProximalDistance = copy.RTBeamLimitingDeviceProximalDistance;
+        ReferencedDefinedDeviceIndex = copy.ReferencedDefinedDeviceIndex;
+        ReferencedRTAccessoryHolderDeviceIndex = copy.ReferencedRTAccessoryHolderDeviceIndex;
+        SoftwareVersions = copy.SoftwareVersions;
+        UDISequence = copy.UDISequence;
+    }
+    return *this;
+}
+
+
+void DRTEnhancedRTBeamLimitingDeviceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        DeviceIndex.clear();
+        ReferencedDefinedDeviceIndex.clear();
+        Manufacturer.clear();
+        ManufacturerModelName.clear();
+        ManufacturerModelVersion.clear();
+        DeviceTypeCodeSequence.clear();
+        DeviceLabel.clear();
+        LongDeviceDescription.clear();
+        DeviceSerialNumber.clear();
+        SoftwareVersions.clear();
+        UDISequence.clear();
+        ManufacturerDeviceIdentifier.clear();
+        DeviceAlternateIdentifier.clear();
+        DeviceAlternateIdentifierType.clear();
+        DeviceAlternateIdentifierFormat.clear();
+        RTAccessoryDeviceSlotID.clear();
+        RTAccessorySlotDistance.clear();
+        ReferencedRTAccessoryHolderDeviceIndex.clear();
+        RTAccessoryHolderSlotID.clear();
+        BeamModifierOrientationAngle.clear();
+        RTBeamLimitingDeviceProximalDistance.clear();
+        RTBeamLimitingDeviceDistalDistance.clear();
+        ParallelRTBeamDelimiterDeviceSequence.clear();
+        FixedRTBeamDelimiterDeviceSequence.clear();
+    }
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingDeviceSequence::Item::isEmpty()
+{
+    return DeviceIndex.isEmpty() &&
+           ReferencedDefinedDeviceIndex.isEmpty() &&
+           Manufacturer.isEmpty() &&
+           ManufacturerModelName.isEmpty() &&
+           ManufacturerModelVersion.isEmpty() &&
+           DeviceTypeCodeSequence.isEmpty() &&
+           DeviceLabel.isEmpty() &&
+           LongDeviceDescription.isEmpty() &&
+           DeviceSerialNumber.isEmpty() &&
+           SoftwareVersions.isEmpty() &&
+           UDISequence.isEmpty() &&
+           ManufacturerDeviceIdentifier.isEmpty() &&
+           DeviceAlternateIdentifier.isEmpty() &&
+           DeviceAlternateIdentifierType.isEmpty() &&
+           DeviceAlternateIdentifierFormat.isEmpty() &&
+           RTAccessoryDeviceSlotID.isEmpty() &&
+           RTAccessorySlotDistance.isEmpty() &&
+           ReferencedRTAccessoryHolderDeviceIndex.isEmpty() &&
+           RTAccessoryHolderSlotID.isEmpty() &&
+           BeamModifierOrientationAngle.isEmpty() &&
+           RTBeamLimitingDeviceProximalDistance.isEmpty() &&
+           RTBeamLimitingDeviceDistalDistance.isEmpty() &&
+           ParallelRTBeamDelimiterDeviceSequence.isEmpty() &&
+           FixedRTBeamDelimiterDeviceSequence.isEmpty();
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingDeviceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, DeviceIndex, "1", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, ReferencedDefinedDeviceIndex, "1", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, Manufacturer, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, ManufacturerModelVersion, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        DeviceTypeCodeSequence.read(item, "1-n", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, DeviceLabel, "1", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, LongDeviceDescription, "1", "3", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, SoftwareVersions, "1-n", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        UDISequence.read(item, "1-n", "3", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, ManufacturerDeviceIdentifier, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, DeviceAlternateIdentifier, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, DeviceAlternateIdentifierType, "1", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, DeviceAlternateIdentifierFormat, "1", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, RTAccessoryDeviceSlotID, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, RTAccessorySlotDistance, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, ReferencedRTAccessoryHolderDeviceIndex, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, RTAccessoryHolderSlotID, "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, BeamModifierOrientationAngle, "1", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, RTBeamLimitingDeviceProximalDistance, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        getAndCheckElementFromDataset(item, RTBeamLimitingDeviceDistalDistance, "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        ParallelRTBeamDelimiterDeviceSequence.read(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        FixedRTBeamDelimiterDeviceSequence.read(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(DeviceIndex), "1", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(ReferencedDefinedDeviceIndex), "1", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(ManufacturerModelVersion), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        if (result.good()) result = DeviceTypeCodeSequence.write(item, "1-n", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(DeviceLabel), "1", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmShortText(LongDeviceDescription), "1", "3", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(SoftwareVersions), "1-n", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        if (result.good()) result = UDISequence.write(item, "1-n", "3", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmShortText(ManufacturerDeviceIdentifier), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(DeviceAlternateIdentifier), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmCodeString(DeviceAlternateIdentifierType), "1", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongText(DeviceAlternateIdentifierFormat), "1", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(RTAccessoryDeviceSlotID), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(RTAccessorySlotDistance), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(ReferencedRTAccessoryHolderDeviceIndex), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmLongString(RTAccessoryHolderSlotID), "1", "2C", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(BeamModifierOrientationAngle), "1", "1", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(RTBeamLimitingDeviceProximalDistance), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(RTBeamLimitingDeviceDistalDistance), "1", "2", "EnhancedRTBeamLimitingDeviceSequence");
+        if (result.good()) result = ParallelRTBeamDelimiterDeviceSequence.write(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+        if (result.good()) result = FixedRTBeamDelimiterDeviceSequence.write(item, "1-n", "1C", "EnhancedRTBeamLimitingDeviceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getBeamModifierOrientationAngle(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, BeamModifierOrientationAngle).getFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceAlternateIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceAlternateIdentifier, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceAlternateIdentifierFormat(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceAlternateIdentifierFormat, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceAlternateIdentifierType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceAlternateIdentifierType, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, DeviceIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceLabel(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceLabel, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceSerialNumber, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getLongDeviceDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongDeviceDescription, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturer(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(Manufacturer, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturerDeviceIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ManufacturerDeviceIdentifier, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturerModelName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ManufacturerModelName, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getManufacturerModelVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ManufacturerModelVersion, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTAccessoryDeviceSlotID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RTAccessoryDeviceSlotID, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTAccessoryHolderSlotID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RTAccessoryHolderSlotID, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTAccessorySlotDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, RTAccessorySlotDistance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTBeamLimitingDeviceDistalDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, RTBeamLimitingDeviceDistalDistance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getRTBeamLimitingDeviceProximalDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, RTBeamLimitingDeviceProximalDistance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getReferencedDefinedDeviceIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, ReferencedDefinedDeviceIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getReferencedRTAccessoryHolderDeviceIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, ReferencedRTAccessoryHolderDeviceIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::getSoftwareVersions(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SoftwareVersions, value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setBeamModifierOrientationAngle(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return BeamModifierOrientationAngle.putFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceAlternateIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeviceAlternateIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceAlternateIdentifierFormat(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = DeviceAlternateIdentifierFormat.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceAlternateIdentifierType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeviceAlternateIdentifierType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DeviceIndex.putUint16(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceLabel(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeviceLabel.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setDeviceSerialNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeviceSerialNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setLongDeviceDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = LongDeviceDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturer(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = Manufacturer.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturerDeviceIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = ManufacturerDeviceIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturerModelName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ManufacturerModelName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setManufacturerModelVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ManufacturerModelVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTAccessoryDeviceSlotID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = RTAccessoryDeviceSlotID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTAccessoryHolderSlotID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = RTAccessoryHolderSlotID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTAccessorySlotDistance(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RTAccessorySlotDistance.putFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTBeamLimitingDeviceDistalDistance(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RTBeamLimitingDeviceDistalDistance.putFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setRTBeamLimitingDeviceProximalDistance(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RTBeamLimitingDeviceProximalDistance.putFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setReferencedDefinedDeviceIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ReferencedDefinedDeviceIndex.putUint16(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setReferencedRTAccessoryHolderDeviceIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ReferencedRTAccessoryHolderDeviceIndex.putUint16(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::Item::setSoftwareVersions(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = SoftwareVersions.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTEnhancedRTBeamLimitingDeviceSequence::DRTEnhancedRTBeamLimitingDeviceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::DRTEnhancedRTBeamLimitingDeviceSequence(const DRTEnhancedRTBeamLimitingDeviceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence &DRTEnhancedRTBeamLimitingDeviceSequence::operator=(const DRTEnhancedRTBeamLimitingDeviceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::~DRTEnhancedRTBeamLimitingDeviceSequence()
+{
+    clear();
+}
+
+
+void DRTEnhancedRTBeamLimitingDeviceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingDeviceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingDeviceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTEnhancedRTBeamLimitingDeviceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTEnhancedRTBeamLimitingDeviceSequence::Item &DRTEnhancedRTBeamLimitingDeviceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::read(DcmItem &dataset,
+                                                          const OFString &card,
+                                                          const OFString &type,
+                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_EnhancedRTBeamLimitingDeviceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_EnhancedRTBeamLimitingDeviceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingDeviceSequence::write(DcmItem &dataset,
+                                                           const OFString &card,
+                                                           const OFString &type,
+                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EnhancedRTBeamLimitingDeviceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drteblos.cc b/dcmrt/libsrc/drteblos.cc
new file mode 100644 (file)
index 0000000..c185473
--- /dev/null
@@ -0,0 +1,599 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTEnhancedRTBeamLimitingOpeningSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drteblos.h"
+
+
+// --- item class ---
+
+DRTEnhancedRTBeamLimitingOpeningSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ParallelRTBeamDelimiterPositions(DCM_ParallelRTBeamDelimiterPositions),
+    RTBeamDelimiterGeometrySequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    RTBeamLimitingDeviceOffset(DCM_RTBeamLimitingDeviceOffset),
+    ReferencedDeviceIndex(DCM_ReferencedDeviceIndex)
+{
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ParallelRTBeamDelimiterPositions(copy.ParallelRTBeamDelimiterPositions),
+    RTBeamDelimiterGeometrySequence(copy.RTBeamDelimiterGeometrySequence),
+    RTBeamLimitingDeviceOffset(copy.RTBeamLimitingDeviceOffset),
+    ReferencedDeviceIndex(copy.ReferencedDeviceIndex)
+{
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::Item::~Item()
+{
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ParallelRTBeamDelimiterPositions = copy.ParallelRTBeamDelimiterPositions;
+        RTBeamDelimiterGeometrySequence = copy.RTBeamDelimiterGeometrySequence;
+        RTBeamLimitingDeviceOffset = copy.RTBeamLimitingDeviceOffset;
+        ReferencedDeviceIndex = copy.ReferencedDeviceIndex;
+    }
+    return *this;
+}
+
+
+void DRTEnhancedRTBeamLimitingOpeningSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedDeviceIndex.clear();
+        RTBeamLimitingDeviceOffset.clear();
+        ParallelRTBeamDelimiterPositions.clear();
+        RTBeamDelimiterGeometrySequence.clear();
+    }
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingOpeningSequence::Item::isEmpty()
+{
+    return ReferencedDeviceIndex.isEmpty() &&
+           RTBeamLimitingDeviceOffset.isEmpty() &&
+           ParallelRTBeamDelimiterPositions.isEmpty() &&
+           RTBeamDelimiterGeometrySequence.isEmpty();
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingOpeningSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedDeviceIndex, "1", "1", "EnhancedRTBeamLimitingOpeningSequence");
+        getAndCheckElementFromDataset(item, RTBeamLimitingDeviceOffset, "2", "1C", "EnhancedRTBeamLimitingOpeningSequence");
+        getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterPositions, "2-n", "1C", "EnhancedRTBeamLimitingOpeningSequence");
+        RTBeamDelimiterGeometrySequence.read(item, "1-n", "1C", "EnhancedRTBeamLimitingOpeningSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(ReferencedDeviceIndex), "1", "1", "EnhancedRTBeamLimitingOpeningSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(RTBeamLimitingDeviceOffset), "2", "1C", "EnhancedRTBeamLimitingOpeningSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(ParallelRTBeamDelimiterPositions), "2-n", "1C", "EnhancedRTBeamLimitingOpeningSequence");
+        if (result.good()) result = RTBeamDelimiterGeometrySequence.write(item, "1-n", "1C", "EnhancedRTBeamLimitingOpeningSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::getParallelRTBeamDelimiterPositions(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, ParallelRTBeamDelimiterPositions).getFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::getRTBeamLimitingDeviceOffset(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, RTBeamLimitingDeviceOffset).getFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::getReferencedDeviceIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, ReferencedDeviceIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::setParallelRTBeamDelimiterPositions(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ParallelRTBeamDelimiterPositions.putFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::setRTBeamLimitingDeviceOffset(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RTBeamLimitingDeviceOffset.putFloat64(value, pos);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::Item::setReferencedDeviceIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ReferencedDeviceIndex.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTEnhancedRTBeamLimitingOpeningSequence::DRTEnhancedRTBeamLimitingOpeningSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::DRTEnhancedRTBeamLimitingOpeningSequence(const DRTEnhancedRTBeamLimitingOpeningSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence &DRTEnhancedRTBeamLimitingOpeningSequence::operator=(const DRTEnhancedRTBeamLimitingOpeningSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::~DRTEnhancedRTBeamLimitingOpeningSequence()
+{
+    clear();
+}
+
+
+void DRTEnhancedRTBeamLimitingOpeningSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingOpeningSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTEnhancedRTBeamLimitingOpeningSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTEnhancedRTBeamLimitingOpeningSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTEnhancedRTBeamLimitingOpeningSequence::Item &DRTEnhancedRTBeamLimitingOpeningSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::read(DcmItem &dataset,
+                                                           const OFString &card,
+                                                           const OFString &type,
+                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_EnhancedRTBeamLimitingOpeningSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_EnhancedRTBeamLimitingOpeningSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTEnhancedRTBeamLimitingOpeningSequence::write(DcmItem &dataset,
+                                                            const OFString &card,
+                                                            const OFString &type,
+                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EnhancedRTBeamLimitingOpeningSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 35ca822ac63ce973257e40a9411c046d3013bc34..3cec218fb3e9bedde81879ab7462d66ebe38a7f8 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTEquivalentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -649,10 +649,12 @@ OFCondition DRTEquivalentCodeSequence::gotoFirstItem()
 OFCondition DRTEquivalentCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtecvis.cc b/dcmrt/libsrc/drtecvis.cc
new file mode 100644 (file)
index 0000000..6ee61f6
--- /dev/null
@@ -0,0 +1,575 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTEquivalentConceptualVolumeInstanceReferenceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtecvis.h"
+
+
+// --- item class ---
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::~Item()
+{
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+    }
+}
+
+
+OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty();
+}
+
+
+OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "EquivalentConceptualVolumeInstanceReferenceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::DRTEquivalentConceptualVolumeInstanceReferenceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::DRTEquivalentConceptualVolumeInstanceReferenceSequence(const DRTEquivalentConceptualVolumeInstanceReferenceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence &DRTEquivalentConceptualVolumeInstanceReferenceSequence::operator=(const DRTEquivalentConceptualVolumeInstanceReferenceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::~DRTEquivalentConceptualVolumeInstanceReferenceSequence()
+{
+    clear();
+}
+
+
+void DRTEquivalentConceptualVolumeInstanceReferenceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTEquivalentConceptualVolumeInstanceReferenceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTEquivalentConceptualVolumeInstanceReferenceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTEquivalentConceptualVolumeInstanceReferenceSequence::Item &DRTEquivalentConceptualVolumeInstanceReferenceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::read(DcmItem &dataset,
+                                                                         const OFString &card,
+                                                                         const OFString &type,
+                                                                         const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_EquivalentConceptualVolumeInstanceReferenceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_EquivalentConceptualVolumeInstanceReferenceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumeInstanceReferenceSequence::write(DcmItem &dataset,
+                                                                          const OFString &card,
+                                                                          const OFString &type,
+                                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EquivalentConceptualVolumeInstanceReferenceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtecvs.cc b/dcmrt/libsrc/drtecvs.cc
new file mode 100644 (file)
index 0000000..7a44be6
--- /dev/null
@@ -0,0 +1,553 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTEquivalentConceptualVolumesSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtecvs.h"
+
+
+// --- item class ---
+
+DRTEquivalentConceptualVolumesSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    EquivalentConceptualVolumeInstanceReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ReferencedConceptualVolumeUID(DCM_ReferencedConceptualVolumeUID)
+{
+}
+
+
+DRTEquivalentConceptualVolumesSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    EquivalentConceptualVolumeInstanceReferenceSequence(copy.EquivalentConceptualVolumeInstanceReferenceSequence),
+    ReferencedConceptualVolumeUID(copy.ReferencedConceptualVolumeUID)
+{
+}
+
+
+DRTEquivalentConceptualVolumesSequence::Item::~Item()
+{
+}
+
+
+DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        EquivalentConceptualVolumeInstanceReferenceSequence = copy.EquivalentConceptualVolumeInstanceReferenceSequence;
+        ReferencedConceptualVolumeUID = copy.ReferencedConceptualVolumeUID;
+    }
+    return *this;
+}
+
+
+void DRTEquivalentConceptualVolumesSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedConceptualVolumeUID.clear();
+        EquivalentConceptualVolumeInstanceReferenceSequence.clear();
+    }
+}
+
+
+OFBool DRTEquivalentConceptualVolumesSequence::Item::isEmpty()
+{
+    return ReferencedConceptualVolumeUID.isEmpty() &&
+           EquivalentConceptualVolumeInstanceReferenceSequence.isEmpty();
+}
+
+
+OFBool DRTEquivalentConceptualVolumesSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedConceptualVolumeUID, "1", "1", "EquivalentConceptualVolumesSequence");
+        EquivalentConceptualVolumeInstanceReferenceSequence.read(item, "1-n", "1", "EquivalentConceptualVolumesSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedConceptualVolumeUID), "1", "1", "EquivalentConceptualVolumesSequence");
+        if (result.good()) result = EquivalentConceptualVolumeInstanceReferenceSequence.write(item, "1-n", "1", "EquivalentConceptualVolumesSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::Item::getReferencedConceptualVolumeUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedConceptualVolumeUID, value, pos);
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::Item::setReferencedConceptualVolumeUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedConceptualVolumeUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTEquivalentConceptualVolumesSequence::DRTEquivalentConceptualVolumesSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTEquivalentConceptualVolumesSequence::DRTEquivalentConceptualVolumesSequence(const DRTEquivalentConceptualVolumesSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTEquivalentConceptualVolumesSequence &DRTEquivalentConceptualVolumesSequence::operator=(const DRTEquivalentConceptualVolumesSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTEquivalentConceptualVolumesSequence::~DRTEquivalentConceptualVolumesSequence()
+{
+    clear();
+}
+
+
+void DRTEquivalentConceptualVolumesSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTEquivalentConceptualVolumesSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTEquivalentConceptualVolumesSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTEquivalentConceptualVolumesSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTEquivalentConceptualVolumesSequence::Item &DRTEquivalentConceptualVolumesSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::read(DcmItem &dataset,
+                                                         const OFString &card,
+                                                         const OFString &type,
+                                                         const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_EquivalentConceptualVolumesSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_EquivalentConceptualVolumesSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTEquivalentConceptualVolumesSequence::write(DcmItem &dataset,
+                                                          const OFString &card,
+                                                          const OFString &type,
+                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EquivalentConceptualVolumesSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 50eab4231c524f31828ade1d3fb61459b81ba2b6..da3937ce2143517501554a20f212203ffaa19316 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -26,6 +26,7 @@ DRTExposureSequence::Item::Item(const OFBool emptyDefaultItem)
     BeamLimitingDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     BlockSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     DiaphragmPosition(DCM_DiaphragmPosition),
+    EnhancedRTBeamLimitingOpeningSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ExposureTime(DCM_ExposureTime),
     ExposureTimeInms(DCM_ExposureTimeInms),
     GantryAngle(DCM_GantryAngle),
@@ -55,6 +56,7 @@ DRTExposureSequence::Item::Item(const Item &copy)
     BeamLimitingDeviceSequence(copy.BeamLimitingDeviceSequence),
     BlockSequence(copy.BlockSequence),
     DiaphragmPosition(copy.DiaphragmPosition),
+    EnhancedRTBeamLimitingOpeningSequence(copy.EnhancedRTBeamLimitingOpeningSequence),
     ExposureTime(copy.ExposureTime),
     ExposureTimeInms(copy.ExposureTimeInms),
     GantryAngle(copy.GantryAngle),
@@ -92,6 +94,7 @@ DRTExposureSequence::Item &DRTExposureSequence::Item::operator=(const Item &copy
         BeamLimitingDeviceSequence = copy.BeamLimitingDeviceSequence;
         BlockSequence = copy.BlockSequence;
         DiaphragmPosition = copy.DiaphragmPosition;
+        EnhancedRTBeamLimitingOpeningSequence = copy.EnhancedRTBeamLimitingOpeningSequence;
         ExposureTime = copy.ExposureTime;
         ExposureTimeInms = copy.ExposureTimeInms;
         GantryAngle = copy.GantryAngle;
@@ -130,6 +133,7 @@ void DRTExposureSequence::Item::clear()
         MetersetExposure.clear();
         DiaphragmPosition.clear();
         BeamLimitingDeviceSequence.clear();
+        EnhancedRTBeamLimitingOpeningSequence.clear();
         GantryAngle.clear();
         GantryPitchAngle.clear();
         BeamLimitingDeviceAngle.clear();
@@ -159,6 +163,7 @@ OFBool DRTExposureSequence::Item::isEmpty()
            MetersetExposure.isEmpty() &&
            DiaphragmPosition.isEmpty() &&
            BeamLimitingDeviceSequence.isEmpty() &&
+           EnhancedRTBeamLimitingOpeningSequence.isEmpty() &&
            GantryAngle.isEmpty() &&
            GantryPitchAngle.isEmpty() &&
            BeamLimitingDeviceAngle.isEmpty() &&
@@ -198,6 +203,7 @@ OFCondition DRTExposureSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, MetersetExposure, "1", "2C", "ExposureSequence");
         getAndCheckElementFromDataset(item, DiaphragmPosition, "4", "3", "ExposureSequence");
         BeamLimitingDeviceSequence.read(item, "1-n", "3", "ExposureSequence");
+        EnhancedRTBeamLimitingOpeningSequence.read(item, "1-n", "2C", "ExposureSequence");
         getAndCheckElementFromDataset(item, GantryAngle, "1", "3", "ExposureSequence");
         getAndCheckElementFromDataset(item, GantryPitchAngle, "1", "3", "ExposureSequence");
         getAndCheckElementFromDataset(item, BeamLimitingDeviceAngle, "1", "3", "ExposureSequence");
@@ -233,6 +239,7 @@ OFCondition DRTExposureSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(MetersetExposure), "1", "2C", "ExposureSequence");
         addElementToDataset(result, item, new DcmDecimalString(DiaphragmPosition), "4", "3", "ExposureSequence");
         if (result.good()) result = BeamLimitingDeviceSequence.write(item, "1-n", "3", "ExposureSequence");
+        if (result.good()) result = EnhancedRTBeamLimitingOpeningSequence.write(item, "1-n", "2C", "ExposureSequence");
         addElementToDataset(result, item, new DcmDecimalString(GantryAngle), "1", "3", "ExposureSequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(GantryPitchAngle), "1", "3", "ExposureSequence");
         addElementToDataset(result, item, new DcmDecimalString(BeamLimitingDeviceAngle), "1", "3", "ExposureSequence");
@@ -877,10 +884,12 @@ OFCondition DRTExposureSequence::gotoFirstItem()
 OFCondition DRTExposureSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtfbdds.cc b/dcmrt/libsrc/drtfbdds.cc
new file mode 100644 (file)
index 0000000..a5459e5
--- /dev/null
@@ -0,0 +1,728 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTFixedRTBeamDelimiterDeviceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtfbdds.h"
+
+
+// --- item class ---
+
+DRTFixedRTBeamDelimiterDeviceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CenterOfCircularOutline(DCM_CenterOfCircularOutline),
+    DiameterOfCircularOutline(DCM_DiameterOfCircularOutline),
+    NumberOfPolygonalVertices(DCM_NumberOfPolygonalVertices),
+    OutlineLeftVerticalEdge(DCM_OutlineLeftVerticalEdge),
+    OutlineLowerHorizontalEdge(DCM_OutlineLowerHorizontalEdge),
+    OutlineRightVerticalEdge(DCM_OutlineRightVerticalEdge),
+    OutlineShapeType(DCM_OutlineShapeType),
+    OutlineUpperHorizontalEdge(DCM_OutlineUpperHorizontalEdge),
+    VerticesOfThePolygonalOutline(DCM_VerticesOfThePolygonalOutline)
+{
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CenterOfCircularOutline(copy.CenterOfCircularOutline),
+    DiameterOfCircularOutline(copy.DiameterOfCircularOutline),
+    NumberOfPolygonalVertices(copy.NumberOfPolygonalVertices),
+    OutlineLeftVerticalEdge(copy.OutlineLeftVerticalEdge),
+    OutlineLowerHorizontalEdge(copy.OutlineLowerHorizontalEdge),
+    OutlineRightVerticalEdge(copy.OutlineRightVerticalEdge),
+    OutlineShapeType(copy.OutlineShapeType),
+    OutlineUpperHorizontalEdge(copy.OutlineUpperHorizontalEdge),
+    VerticesOfThePolygonalOutline(copy.VerticesOfThePolygonalOutline)
+{
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::Item::~Item()
+{
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CenterOfCircularOutline = copy.CenterOfCircularOutline;
+        DiameterOfCircularOutline = copy.DiameterOfCircularOutline;
+        NumberOfPolygonalVertices = copy.NumberOfPolygonalVertices;
+        OutlineLeftVerticalEdge = copy.OutlineLeftVerticalEdge;
+        OutlineLowerHorizontalEdge = copy.OutlineLowerHorizontalEdge;
+        OutlineRightVerticalEdge = copy.OutlineRightVerticalEdge;
+        OutlineShapeType = copy.OutlineShapeType;
+        OutlineUpperHorizontalEdge = copy.OutlineUpperHorizontalEdge;
+        VerticesOfThePolygonalOutline = copy.VerticesOfThePolygonalOutline;
+    }
+    return *this;
+}
+
+
+void DRTFixedRTBeamDelimiterDeviceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        OutlineShapeType.clear();
+        OutlineLeftVerticalEdge.clear();
+        OutlineRightVerticalEdge.clear();
+        OutlineUpperHorizontalEdge.clear();
+        OutlineLowerHorizontalEdge.clear();
+        CenterOfCircularOutline.clear();
+        DiameterOfCircularOutline.clear();
+        NumberOfPolygonalVertices.clear();
+        VerticesOfThePolygonalOutline.clear();
+    }
+}
+
+
+OFBool DRTFixedRTBeamDelimiterDeviceSequence::Item::isEmpty()
+{
+    return OutlineShapeType.isEmpty() &&
+           OutlineLeftVerticalEdge.isEmpty() &&
+           OutlineRightVerticalEdge.isEmpty() &&
+           OutlineUpperHorizontalEdge.isEmpty() &&
+           OutlineLowerHorizontalEdge.isEmpty() &&
+           CenterOfCircularOutline.isEmpty() &&
+           DiameterOfCircularOutline.isEmpty() &&
+           NumberOfPolygonalVertices.isEmpty() &&
+           VerticesOfThePolygonalOutline.isEmpty();
+}
+
+
+OFBool DRTFixedRTBeamDelimiterDeviceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, OutlineShapeType, "1", "1", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, OutlineLeftVerticalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, OutlineRightVerticalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, OutlineUpperHorizontalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, OutlineLowerHorizontalEdge, "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, CenterOfCircularOutline, "2", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, DiameterOfCircularOutline, "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, NumberOfPolygonalVertices, "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, VerticesOfThePolygonalOutline, "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmCodeString(OutlineShapeType), "1", "1", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLeftVerticalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineRightVerticalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineUpperHorizontalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLowerHorizontalEdge), "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(CenterOfCircularOutline), "2", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(DiameterOfCircularOutline), "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmUnsignedLong(NumberOfPolygonalVertices), "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmOtherFloat(VerticesOfThePolygonalOutline), "1", "1C", "FixedRTBeamDelimiterDeviceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getCenterOfCircularOutline(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, CenterOfCircularOutline).getFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getDiameterOfCircularOutline(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, DiameterOfCircularOutline).getFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedLong &, NumberOfPolygonalVertices).getUint32(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineLeftVerticalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineLowerHorizontalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineRightVerticalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineShapeType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(OutlineShapeType, value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineUpperHorizontalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setCenterOfCircularOutline(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return CenterOfCircularOutline.putFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setDiameterOfCircularOutline(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DiameterOfCircularOutline.putFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return NumberOfPolygonalVertices.putUint32(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineLeftVerticalEdge.putFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineLowerHorizontalEdge.putFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineRightVerticalEdge.putFloat64(value, pos);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineShapeType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = OutlineShapeType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::Item::setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineUpperHorizontalEdge.putFloat64(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTFixedRTBeamDelimiterDeviceSequence::DRTFixedRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::DRTFixedRTBeamDelimiterDeviceSequence(const DRTFixedRTBeamDelimiterDeviceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence &DRTFixedRTBeamDelimiterDeviceSequence::operator=(const DRTFixedRTBeamDelimiterDeviceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::~DRTFixedRTBeamDelimiterDeviceSequence()
+{
+    clear();
+}
+
+
+void DRTFixedRTBeamDelimiterDeviceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTFixedRTBeamDelimiterDeviceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTFixedRTBeamDelimiterDeviceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTFixedRTBeamDelimiterDeviceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTFixedRTBeamDelimiterDeviceSequence::Item &DRTFixedRTBeamDelimiterDeviceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::read(DcmItem &dataset,
+                                                        const OFString &card,
+                                                        const OFString &type,
+                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_FixedRTBeamDelimiterDeviceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_FixedRTBeamDelimiterDeviceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTFixedRTBeamDelimiterDeviceSequence::write(DcmItem &dataset,
+                                                         const OFString &card,
+                                                         const OFString &type,
+                                                         const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_FixedRTBeamDelimiterDeviceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 911887143185b38e003511ed8c480afd83f78bdf..2944813ce8395e421d0a3a4e7f9dd2187d6ed14e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -409,10 +409,12 @@ OFCondition DRTFixationDeviceSequence::gotoFirstItem()
 OFCondition DRTFixationDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index f1e4e01c1bb8c42d08e573fae2ed34a79ec16cf9..af9a2dabe698577861f5c849c917af3ae836e543 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -318,10 +318,12 @@ OFCondition DRTFrameExtractionSequence::gotoFirstItem()
 OFCondition DRTFrameExtractionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index d0f1d7be0fde2d9819a979a61746a3bc4ce755d9..b4ba6df2d47684b53414b5faea18e21f13d3f07a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@
 DRTFractionGroupSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     BeamDoseMeaning(DCM_BeamDoseMeaning),
+    DefinitionSourceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     FractionGroupDescription(DCM_FractionGroupDescription),
     FractionGroupNumber(DCM_FractionGroupNumber),
     FractionPattern(DCM_FractionPattern),
@@ -41,6 +42,7 @@ DRTFractionGroupSequence::Item::Item(const OFBool emptyDefaultItem)
 DRTFractionGroupSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     BeamDoseMeaning(copy.BeamDoseMeaning),
+    DefinitionSourceSequence(copy.DefinitionSourceSequence),
     FractionGroupDescription(copy.FractionGroupDescription),
     FractionGroupNumber(copy.FractionGroupNumber),
     FractionPattern(copy.FractionPattern),
@@ -68,6 +70,7 @@ DRTFractionGroupSequence::Item &DRTFractionGroupSequence::Item::operator=(const
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
         BeamDoseMeaning = copy.BeamDoseMeaning;
+        DefinitionSourceSequence = copy.DefinitionSourceSequence;
         FractionGroupDescription = copy.FractionGroupDescription;
         FractionGroupNumber = copy.FractionGroupNumber;
         FractionPattern = copy.FractionPattern;
@@ -92,6 +95,7 @@ void DRTFractionGroupSequence::Item::clear()
         /* clear all DICOM attributes */
         FractionGroupNumber.clear();
         FractionGroupDescription.clear();
+        DefinitionSourceSequence.clear();
         ReferencedDoseSequence.clear();
         ReferencedDoseReferenceSequence.clear();
         NumberOfFractionsPlanned.clear();
@@ -111,6 +115,7 @@ OFBool DRTFractionGroupSequence::Item::isEmpty()
 {
     return FractionGroupNumber.isEmpty() &&
            FractionGroupDescription.isEmpty() &&
+           DefinitionSourceSequence.isEmpty() &&
            ReferencedDoseSequence.isEmpty() &&
            ReferencedDoseReferenceSequence.isEmpty() &&
            NumberOfFractionsPlanned.isEmpty() &&
@@ -140,6 +145,7 @@ OFCondition DRTFractionGroupSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, FractionGroupNumber, "1", "1", "FractionGroupSequence");
         getAndCheckElementFromDataset(item, FractionGroupDescription, "1", "3", "FractionGroupSequence");
+        DefinitionSourceSequence.read(item, "1-n", "3", "FractionGroupSequence");
         ReferencedDoseSequence.read(item, "1-n", "3", "FractionGroupSequence");
         ReferencedDoseReferenceSequence.read(item, "1-n", "3", "FractionGroupSequence");
         getAndCheckElementFromDataset(item, NumberOfFractionsPlanned, "1", "2", "FractionGroupSequence");
@@ -165,6 +171,7 @@ OFCondition DRTFractionGroupSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(FractionGroupNumber), "1", "1", "FractionGroupSequence");
         addElementToDataset(result, item, new DcmLongString(FractionGroupDescription), "1", "3", "FractionGroupSequence");
+        if (result.good()) result = DefinitionSourceSequence.write(item, "1-n", "3", "FractionGroupSequence");
         if (result.good()) result = ReferencedDoseSequence.write(item, "1-n", "3", "FractionGroupSequence");
         if (result.good()) result = ReferencedDoseReferenceSequence.write(item, "1-n", "3", "FractionGroupSequence");
         addElementToDataset(result, item, new DcmIntegerString(NumberOfFractionsPlanned), "1", "2", "FractionGroupSequence");
@@ -557,10 +564,12 @@ OFCondition DRTFractionGroupSequence::gotoFirstItem()
 OFCondition DRTFractionGroupSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index c8864be2d8b69aa369af0bd1e1baa240aeec0304..6348d5a1b3508692fac881b78e92d0e146dca949 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -364,10 +364,12 @@ OFCondition DRTFractionGroupSummarySequence::gotoFirstItem()
 OFCondition DRTFractionGroupSummarySequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 7ff101ae2c260ed2c4929ba1a8bfa72b03226f67..0ce2f53787a4dfc5ef448a8d51235b4fcf142552 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -281,10 +281,12 @@ OFCondition DRTFluenceMapSequence::gotoFirstItem()
 OFCondition DRTFluenceMapSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index d5dfc7e200bed23aa6391df8e07614c98c0fc4f9..14956a43254e488fbc7e1498824efc662ec836d3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -339,10 +339,12 @@ OFCondition DRTFractionStatusSummarySequence::gotoFirstItem()
 OFCondition DRTFractionStatusSummarySequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtgas.cc b/dcmrt/libsrc/drtgas.cc
deleted file mode 100644 (file)
index aa4dc17..0000000
+++ /dev/null
@@ -1,694 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTGeneralAccessorySequence
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtgas.h"
-
-
-// --- item class ---
-
-DRTGeneralAccessorySequence::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    GeneralAccessoryDescription(DCM_GeneralAccessoryDescription),
-    GeneralAccessoryID(DCM_GeneralAccessoryID),
-    GeneralAccessoryNumber(DCM_GeneralAccessoryNumber),
-    GeneralAccessoryType(DCM_GeneralAccessoryType),
-    SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance)
-{
-}
-
-
-DRTGeneralAccessorySequence::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    GeneralAccessoryDescription(copy.GeneralAccessoryDescription),
-    GeneralAccessoryID(copy.GeneralAccessoryID),
-    GeneralAccessoryNumber(copy.GeneralAccessoryNumber),
-    GeneralAccessoryType(copy.GeneralAccessoryType),
-    SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance)
-{
-}
-
-
-DRTGeneralAccessorySequence::Item::~Item()
-{
-}
-
-
-DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        GeneralAccessoryDescription = copy.GeneralAccessoryDescription;
-        GeneralAccessoryID = copy.GeneralAccessoryID;
-        GeneralAccessoryNumber = copy.GeneralAccessoryNumber;
-        GeneralAccessoryType = copy.GeneralAccessoryType;
-        SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance;
-    }
-    return *this;
-}
-
-
-void DRTGeneralAccessorySequence::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        GeneralAccessoryNumber.clear();
-        GeneralAccessoryID.clear();
-        GeneralAccessoryDescription.clear();
-        GeneralAccessoryType.clear();
-        AccessoryCode.clear();
-        SourceToGeneralAccessoryDistance.clear();
-    }
-}
-
-
-OFBool DRTGeneralAccessorySequence::Item::isEmpty()
-{
-    return GeneralAccessoryNumber.isEmpty() &&
-           GeneralAccessoryID.isEmpty() &&
-           GeneralAccessoryDescription.isEmpty() &&
-           GeneralAccessoryType.isEmpty() &&
-           AccessoryCode.isEmpty() &&
-           SourceToGeneralAccessoryDistance.isEmpty();
-}
-
-
-OFBool DRTGeneralAccessorySequence::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence");
-        getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence");
-        getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence");
-        getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence");
-        getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence");
-        addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence");
-        addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence");
-        addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::getAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AccessoryCode, value, pos);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(GeneralAccessoryDescription, value, pos);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(GeneralAccessoryID, value, pos);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(GeneralAccessoryNumber, value, pos);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(GeneralAccessoryType, value, pos);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
-        if (result.good())
-            result = GeneralAccessoryDescription.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = GeneralAccessoryID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = GeneralAccessoryNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::setGeneralAccessoryType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = GeneralAccessoryType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return SourceToGeneralAccessoryDistance.putFloat32(value, pos);
-}
-
-
-// --- sequence class ---
-
-DRTGeneralAccessorySequence::DRTGeneralAccessorySequence(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTGeneralAccessorySequence::DRTGeneralAccessorySequence(const DRTGeneralAccessorySequence &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTGeneralAccessorySequence &DRTGeneralAccessorySequence::operator=(const DRTGeneralAccessorySequence &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTGeneralAccessorySequence::~DRTGeneralAccessorySequence()
-{
-    clear();
-}
-
-
-void DRTGeneralAccessorySequence::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTGeneralAccessorySequence::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTGeneralAccessorySequence::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTGeneralAccessorySequence::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTGeneralAccessorySequence::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTGeneralAccessorySequence::Item &DRTGeneralAccessorySequence::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTGeneralAccessorySequence::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::read(DcmItem &dataset,
-                                              const OFString &card,
-                                              const OFString &type,
-                                              const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_GeneralAccessorySequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTGeneralAccessorySequence::write(DcmItem &dataset,
-                                               const OFString &card,
-                                               const OFString &type,
-                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtgas1.cc b/dcmrt/libsrc/drtgas1.cc
new file mode 100644 (file)
index 0000000..f1992a0
--- /dev/null
@@ -0,0 +1,696 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTGeneralAccessorySequenceInEquipmentSpecificationModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtgas1.h"
+
+
+// --- item class ---
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    GeneralAccessoryDescription(DCM_GeneralAccessoryDescription),
+    GeneralAccessoryID(DCM_GeneralAccessoryID),
+    GeneralAccessoryNumber(DCM_GeneralAccessoryNumber),
+    GeneralAccessoryType(DCM_GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    GeneralAccessoryDescription(copy.GeneralAccessoryDescription),
+    GeneralAccessoryID(copy.GeneralAccessoryID),
+    GeneralAccessoryNumber(copy.GeneralAccessoryNumber),
+    GeneralAccessoryType(copy.GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::~Item()
+{
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        GeneralAccessoryDescription = copy.GeneralAccessoryDescription;
+        GeneralAccessoryID = copy.GeneralAccessoryID;
+        GeneralAccessoryNumber = copy.GeneralAccessoryNumber;
+        GeneralAccessoryType = copy.GeneralAccessoryType;
+        SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance;
+    }
+    return *this;
+}
+
+
+void DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        GeneralAccessoryNumber.clear();
+        GeneralAccessoryID.clear();
+        GeneralAccessoryDescription.clear();
+        GeneralAccessoryType.clear();
+        AccessoryCode.clear();
+        SourceToGeneralAccessoryDistance.clear();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::isEmpty()
+{
+    return GeneralAccessoryNumber.isEmpty() &&
+           GeneralAccessoryID.isEmpty() &&
+           GeneralAccessoryDescription.isEmpty() &&
+           GeneralAccessoryType.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           SourceToGeneralAccessoryDistance.isEmpty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryDescription, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryID, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryNumber, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryType, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceToGeneralAccessoryDistance.putFloat32(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::DRTGeneralAccessorySequenceInEquipmentSpecificationModule(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::operator=(const DRTGeneralAccessorySequenceInEquipmentSpecificationModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::~DRTGeneralAccessorySequenceInEquipmentSpecificationModule()
+{
+    clear();
+}
+
+
+void DRTGeneralAccessorySequenceInEquipmentSpecificationModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInEquipmentSpecificationModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTGeneralAccessorySequenceInEquipmentSpecificationModule::Item &DRTGeneralAccessorySequenceInEquipmentSpecificationModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::read(DcmItem &dataset,
+                                                                            const OFString &card,
+                                                                            const OFString &type,
+                                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_GeneralAccessorySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInEquipmentSpecificationModule::write(DcmItem &dataset,
+                                                                             const OFString &card,
+                                                                             const OFString &type,
+                                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtgas2.cc b/dcmrt/libsrc/drtgas2.cc
new file mode 100644 (file)
index 0000000..dda4ecf
--- /dev/null
@@ -0,0 +1,696 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTGeneralAccessorySequenceInRTBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtgas2.h"
+
+
+// --- item class ---
+
+DRTGeneralAccessorySequenceInRTBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    GeneralAccessoryDescription(DCM_GeneralAccessoryDescription),
+    GeneralAccessoryID(DCM_GeneralAccessoryID),
+    GeneralAccessoryNumber(DCM_GeneralAccessoryNumber),
+    GeneralAccessoryType(DCM_GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    GeneralAccessoryDescription(copy.GeneralAccessoryDescription),
+    GeneralAccessoryID(copy.GeneralAccessoryID),
+    GeneralAccessoryNumber(copy.GeneralAccessoryNumber),
+    GeneralAccessoryType(copy.GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::Item::~Item()
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        GeneralAccessoryDescription = copy.GeneralAccessoryDescription;
+        GeneralAccessoryID = copy.GeneralAccessoryID;
+        GeneralAccessoryNumber = copy.GeneralAccessoryNumber;
+        GeneralAccessoryType = copy.GeneralAccessoryType;
+        SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance;
+    }
+    return *this;
+}
+
+
+void DRTGeneralAccessorySequenceInRTBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        GeneralAccessoryNumber.clear();
+        GeneralAccessoryID.clear();
+        GeneralAccessoryDescription.clear();
+        GeneralAccessoryType.clear();
+        AccessoryCode.clear();
+        SourceToGeneralAccessoryDistance.clear();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsModule::Item::isEmpty()
+{
+    return GeneralAccessoryNumber.isEmpty() &&
+           GeneralAccessoryID.isEmpty() &&
+           GeneralAccessoryDescription.isEmpty() &&
+           GeneralAccessoryType.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           SourceToGeneralAccessoryDistance.isEmpty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryDescription, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryID, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryNumber, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryType, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceToGeneralAccessoryDistance.putFloat32(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTGeneralAccessorySequenceInRTBeamsModule::DRTGeneralAccessorySequenceInRTBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::DRTGeneralAccessorySequenceInRTBeamsModule(const DRTGeneralAccessorySequenceInRTBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule &DRTGeneralAccessorySequenceInRTBeamsModule::operator=(const DRTGeneralAccessorySequenceInRTBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::~DRTGeneralAccessorySequenceInRTBeamsModule()
+{
+    clear();
+}
+
+
+void DRTGeneralAccessorySequenceInRTBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTGeneralAccessorySequenceInRTBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTGeneralAccessorySequenceInRTBeamsModule::Item &DRTGeneralAccessorySequenceInRTBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::read(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_GeneralAccessorySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsModule::write(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtgas3.cc b/dcmrt/libsrc/drtgas3.cc
new file mode 100644 (file)
index 0000000..16f5555
--- /dev/null
@@ -0,0 +1,696 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtgas3.h"
+
+
+// --- item class ---
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    GeneralAccessoryDescription(DCM_GeneralAccessoryDescription),
+    GeneralAccessoryID(DCM_GeneralAccessoryID),
+    GeneralAccessoryNumber(DCM_GeneralAccessoryNumber),
+    GeneralAccessoryType(DCM_GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    GeneralAccessoryDescription(copy.GeneralAccessoryDescription),
+    GeneralAccessoryID(copy.GeneralAccessoryID),
+    GeneralAccessoryNumber(copy.GeneralAccessoryNumber),
+    GeneralAccessoryType(copy.GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::~Item()
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        GeneralAccessoryDescription = copy.GeneralAccessoryDescription;
+        GeneralAccessoryID = copy.GeneralAccessoryID;
+        GeneralAccessoryNumber = copy.GeneralAccessoryNumber;
+        GeneralAccessoryType = copy.GeneralAccessoryType;
+        SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance;
+    }
+    return *this;
+}
+
+
+void DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        GeneralAccessoryNumber.clear();
+        GeneralAccessoryID.clear();
+        GeneralAccessoryDescription.clear();
+        GeneralAccessoryType.clear();
+        AccessoryCode.clear();
+        SourceToGeneralAccessoryDistance.clear();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::isEmpty()
+{
+    return GeneralAccessoryNumber.isEmpty() &&
+           GeneralAccessoryID.isEmpty() &&
+           GeneralAccessoryDescription.isEmpty() &&
+           GeneralAccessoryType.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           SourceToGeneralAccessoryDistance.isEmpty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryDescription, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryID, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryNumber, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryType, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceToGeneralAccessoryDistance.putFloat32(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::operator=(const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::~DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule()
+{
+    clear();
+}
+
+
+void DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::read(DcmItem &dataset,
+                                                                          const OFString &card,
+                                                                          const OFString &type,
+                                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_GeneralAccessorySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTBeamsSessionRecordModule::write(DcmItem &dataset,
+                                                                           const OFString &card,
+                                                                           const OFString &type,
+                                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtgas4.cc b/dcmrt/libsrc/drtgas4.cc
new file mode 100644 (file)
index 0000000..c753adb
--- /dev/null
@@ -0,0 +1,696 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTGeneralAccessorySequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtgas4.h"
+
+
+// --- item class ---
+
+DRTGeneralAccessorySequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    GeneralAccessoryDescription(DCM_GeneralAccessoryDescription),
+    GeneralAccessoryID(DCM_GeneralAccessoryID),
+    GeneralAccessoryNumber(DCM_GeneralAccessoryNumber),
+    GeneralAccessoryType(DCM_GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(DCM_SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    GeneralAccessoryDescription(copy.GeneralAccessoryDescription),
+    GeneralAccessoryID(copy.GeneralAccessoryID),
+    GeneralAccessoryNumber(copy.GeneralAccessoryNumber),
+    GeneralAccessoryType(copy.GeneralAccessoryType),
+    SourceToGeneralAccessoryDistance(copy.SourceToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::Item::~Item()
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        GeneralAccessoryDescription = copy.GeneralAccessoryDescription;
+        GeneralAccessoryID = copy.GeneralAccessoryID;
+        GeneralAccessoryNumber = copy.GeneralAccessoryNumber;
+        GeneralAccessoryType = copy.GeneralAccessoryType;
+        SourceToGeneralAccessoryDistance = copy.SourceToGeneralAccessoryDistance;
+    }
+    return *this;
+}
+
+
+void DRTGeneralAccessorySequenceInRTImageModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        GeneralAccessoryNumber.clear();
+        GeneralAccessoryID.clear();
+        GeneralAccessoryDescription.clear();
+        GeneralAccessoryType.clear();
+        AccessoryCode.clear();
+        SourceToGeneralAccessoryDistance.clear();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTImageModule::Item::isEmpty()
+{
+    return GeneralAccessoryNumber.isEmpty() &&
+           GeneralAccessoryID.isEmpty() &&
+           GeneralAccessoryDescription.isEmpty() &&
+           GeneralAccessoryType.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           SourceToGeneralAccessoryDistance.isEmpty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTImageModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, SourceToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryDescription, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryID, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryNumber, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryType, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::getSourceToGeneralAccessoryDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, SourceToGeneralAccessoryDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::Item::setSourceToGeneralAccessoryDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceToGeneralAccessoryDistance.putFloat32(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTGeneralAccessorySequenceInRTImageModule::DRTGeneralAccessorySequenceInRTImageModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::DRTGeneralAccessorySequenceInRTImageModule(const DRTGeneralAccessorySequenceInRTImageModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule &DRTGeneralAccessorySequenceInRTImageModule::operator=(const DRTGeneralAccessorySequenceInRTImageModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::~DRTGeneralAccessorySequenceInRTImageModule()
+{
+    clear();
+}
+
+
+void DRTGeneralAccessorySequenceInRTImageModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTImageModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTImageModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTGeneralAccessorySequenceInRTImageModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTGeneralAccessorySequenceInRTImageModule::Item &DRTGeneralAccessorySequenceInRTImageModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::read(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_GeneralAccessorySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTImageModule::write(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtgas5.cc b/dcmrt/libsrc/drtgas5.cc
new file mode 100644 (file)
index 0000000..432f64d
--- /dev/null
@@ -0,0 +1,709 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTGeneralAccessorySequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtgas5.h"
+
+
+// --- item class ---
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    GeneralAccessoryDescription(DCM_GeneralAccessoryDescription),
+    GeneralAccessoryID(DCM_GeneralAccessoryID),
+    GeneralAccessoryNumber(DCM_GeneralAccessoryNumber),
+    GeneralAccessoryType(DCM_GeneralAccessoryType),
+    IsocenterToGeneralAccessoryDistance(DCM_IsocenterToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    GeneralAccessoryDescription(copy.GeneralAccessoryDescription),
+    GeneralAccessoryID(copy.GeneralAccessoryID),
+    GeneralAccessoryNumber(copy.GeneralAccessoryNumber),
+    GeneralAccessoryType(copy.GeneralAccessoryType),
+    IsocenterToGeneralAccessoryDistance(copy.IsocenterToGeneralAccessoryDistance)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        GeneralAccessoryDescription = copy.GeneralAccessoryDescription;
+        GeneralAccessoryID = copy.GeneralAccessoryID;
+        GeneralAccessoryNumber = copy.GeneralAccessoryNumber;
+        GeneralAccessoryType = copy.GeneralAccessoryType;
+        IsocenterToGeneralAccessoryDistance = copy.IsocenterToGeneralAccessoryDistance;
+    }
+    return *this;
+}
+
+
+void DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        GeneralAccessoryNumber.clear();
+        GeneralAccessoryID.clear();
+        GeneralAccessoryDescription.clear();
+        GeneralAccessoryType.clear();
+        AccessoryCode.clear();
+        IsocenterToGeneralAccessoryDistance.clear();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return GeneralAccessoryNumber.isEmpty() &&
+           GeneralAccessoryID.isEmpty() &&
+           GeneralAccessoryDescription.isEmpty() &&
+           GeneralAccessoryType.isEmpty() &&
+           AccessoryCode.isEmpty() &&
+           IsocenterToGeneralAccessoryDistance.isEmpty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, IsocenterToGeneralAccessoryDistance, "1", "3", "GeneralAccessorySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmDecimalString(IsocenterToGeneralAccessoryDistance), "1", "3", "GeneralAccessorySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryDescription, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryID, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryNumber, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryType, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getIsocenterToGeneralAccessoryDistance(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(IsocenterToGeneralAccessoryDistance, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::getIsocenterToGeneralAccessoryDistance(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, IsocenterToGeneralAccessoryDistance).getFloat64(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::Item::setIsocenterToGeneralAccessoryDistance(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = IsocenterToGeneralAccessoryDistance.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::DRTGeneralAccessorySequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::DRTGeneralAccessorySequenceInRTIonBeamsModule(const DRTGeneralAccessorySequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule &DRTGeneralAccessorySequenceInRTIonBeamsModule::operator=(const DRTGeneralAccessorySequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::~DRTGeneralAccessorySequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTGeneralAccessorySequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTGeneralAccessorySequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTGeneralAccessorySequenceInRTIonBeamsModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                                const OFString &card,
+                                                                const OFString &type,
+                                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_GeneralAccessorySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                                 const OFString &card,
+                                                                 const OFString &type,
+                                                                 const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtgas6.cc b/dcmrt/libsrc/drtgas6.cc
new file mode 100644 (file)
index 0000000..755d704
--- /dev/null
@@ -0,0 +1,671 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtgas6.h"
+
+
+// --- item class ---
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    GeneralAccessoryDescription(DCM_GeneralAccessoryDescription),
+    GeneralAccessoryID(DCM_GeneralAccessoryID),
+    GeneralAccessoryNumber(DCM_GeneralAccessoryNumber),
+    GeneralAccessoryType(DCM_GeneralAccessoryType)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    GeneralAccessoryDescription(copy.GeneralAccessoryDescription),
+    GeneralAccessoryID(copy.GeneralAccessoryID),
+    GeneralAccessoryNumber(copy.GeneralAccessoryNumber),
+    GeneralAccessoryType(copy.GeneralAccessoryType)
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::~Item()
+{
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        GeneralAccessoryDescription = copy.GeneralAccessoryDescription;
+        GeneralAccessoryID = copy.GeneralAccessoryID;
+        GeneralAccessoryNumber = copy.GeneralAccessoryNumber;
+        GeneralAccessoryType = copy.GeneralAccessoryType;
+    }
+    return *this;
+}
+
+
+void DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        GeneralAccessoryNumber.clear();
+        GeneralAccessoryID.clear();
+        GeneralAccessoryDescription.clear();
+        GeneralAccessoryType.clear();
+        AccessoryCode.clear();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
+{
+    return GeneralAccessoryNumber.isEmpty() &&
+           GeneralAccessoryID.isEmpty() &&
+           GeneralAccessoryDescription.isEmpty() &&
+           GeneralAccessoryType.isEmpty() &&
+           AccessoryCode.isEmpty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, GeneralAccessoryNumber, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryID, "1", "1", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryDescription, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, GeneralAccessoryType, "1", "3", "GeneralAccessorySequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "GeneralAccessorySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(GeneralAccessoryNumber), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortString(GeneralAccessoryID), "1", "1", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmShortText(GeneralAccessoryDescription), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmCodeString(GeneralAccessoryType), "1", "3", "GeneralAccessorySequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "GeneralAccessorySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryDescription(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryDescription, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryID, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryNumber, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, GeneralAccessoryNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::getGeneralAccessoryType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(GeneralAccessoryType, value, pos);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryDescription(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryDescription.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item::setGeneralAccessoryType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = GeneralAccessoryType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::operator=(const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::~DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule()
+{
+    clear();
+}
+
+
+void DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::Item &DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
+                                                                             const OFString &card,
+                                                                             const OFString &type,
+                                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_GeneralAccessorySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_GeneralAccessorySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTGeneralAccessorySequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
+                                                                              const OFString &card,
+                                                                              const OFString &type,
+                                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_GeneralAccessorySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 99ba839c7b0f436d23c2cdb43f314e8644642954..b5529b43275a75e1bb32cfac005c27a821276396 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTGeneticModificationsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTGeneticModificationsCodeSequence::gotoFirstItem()
 OFCondition DRTGeneticModificationsCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 84d56347fb4c98df3992f27eec42a63c4a838f3f..a30961e0e496ce8ac9a567ff0281d96cd424a9b3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTGeneticModificationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -279,10 +279,12 @@ OFCondition DRTGeneticModificationsSequence::gotoFirstItem()
 OFCondition DRTGeneticModificationsSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index c9cc891a34131a2ed34f6929660a7e490191ec7d..e82dbd07c40f3fb5414a3ea013264173458967d7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTGroupOfPatientsIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -333,10 +333,12 @@ OFCondition DRTGroupOfPatientsIdentificationSequence::gotoFirstItem()
 OFCondition DRTGroupOfPatientsIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 97b558e69cd30b95f8a11d0fea369aa0d4b25084..e610de4ff8317d238aecba298e9f2613769c80ad 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -330,10 +330,12 @@ OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoFirstItem()
 OFCondition DRTHL7StructuredDocumentReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index fb686b6efd35ceb04483ff17f6ba76b9fb961c2d..70eb857edb71148639267fc151dff88c8e63afbb 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -301,10 +301,12 @@ OFCondition DRTIssuerOfAdmissionIDSequence::gotoFirstItem()
 OFCondition DRTIssuerOfAdmissionIDSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 3ad028dcb72a9369095a853791ec7db16a6d42e5..f0d5d9a3aaea755eee59401f55a54a74fa81bcd9 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -301,10 +301,12 @@ OFCondition DRTIssuerOfAccessionNumberSequence::gotoFirstItem()
 OFCondition DRTIssuerOfAccessionNumberSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5f3e32f5306869e27b1369483f836275876a9f24..d8a734a9a459ab25656f937e5f7cae4cd90f3b63 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -353,10 +353,12 @@ OFCondition DRTIonBeamLimitingDeviceSequence::gotoFirstItem()
 OFCondition DRTIonBeamLimitingDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index acf50a19b16e8d284739ff5261f3e99af0d94877..229077b6b2559f68a6336696c339d6ad736cb9d3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -648,10 +648,12 @@ OFCondition DRTIonBlockSequence::gotoFirstItem()
 OFCondition DRTIonBlockSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index feca160d4219bd108b6bc94c25bb623537f4f061..d61d4e8bcf1cceb304d52171b895494313a2864a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -28,6 +28,7 @@ DRTIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     BeamType(DCM_BeamType),
     DepthDoseParametersSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
+    EntityLongLabel(DCM_EntityLongLabel),
     FinalCumulativeMetersetWeight(DCM_FinalCumulativeMetersetWeight),
     FixationEye(DCM_FixationEye),
     FixationLightAzimuthalAngle(DCM_FixationLightAzimuthalAngle),
@@ -36,6 +37,7 @@ DRTIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionName(DCM_InstitutionName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     IonBeamLimitingDeviceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     IonBlockSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     IonControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/),
@@ -89,6 +91,7 @@ DRTIonBeamSequence::Item::Item(const Item &copy)
     BeamType(copy.BeamType),
     DepthDoseParametersSequence(copy.DepthDoseParametersSequence),
     DeviceSerialNumber(copy.DeviceSerialNumber),
+    EntityLongLabel(copy.EntityLongLabel),
     FinalCumulativeMetersetWeight(copy.FinalCumulativeMetersetWeight),
     FixationEye(copy.FixationEye),
     FixationLightAzimuthalAngle(copy.FixationLightAzimuthalAngle),
@@ -97,6 +100,7 @@ DRTIonBeamSequence::Item::Item(const Item &copy)
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionName(copy.InstitutionName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     IonBeamLimitingDeviceSequence(copy.IonBeamLimitingDeviceSequence),
     IonBlockSequence(copy.IonBlockSequence),
     IonControlPointSequence(copy.IonControlPointSequence),
@@ -158,6 +162,7 @@ DRTIonBeamSequence::Item &DRTIonBeamSequence::Item::operator=(const Item &copy)
         BeamType = copy.BeamType;
         DepthDoseParametersSequence = copy.DepthDoseParametersSequence;
         DeviceSerialNumber = copy.DeviceSerialNumber;
+        EntityLongLabel = copy.EntityLongLabel;
         FinalCumulativeMetersetWeight = copy.FinalCumulativeMetersetWeight;
         FixationEye = copy.FixationEye;
         FixationLightAzimuthalAngle = copy.FixationLightAzimuthalAngle;
@@ -166,6 +171,7 @@ DRTIonBeamSequence::Item &DRTIonBeamSequence::Item::operator=(const Item &copy)
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionName = copy.InstitutionName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         IonBeamLimitingDeviceSequence = copy.IonBeamLimitingDeviceSequence;
         IonBlockSequence = copy.IonBlockSequence;
         IonControlPointSequence = copy.IonControlPointSequence;
@@ -218,6 +224,7 @@ void DRTIonBeamSequence::Item::clear()
         /* clear all DICOM attributes */
         BeamNumber.clear();
         BeamName.clear();
+        EntityLongLabel.clear();
         BeamDescription.clear();
         BeamType.clear();
         RadiationType.clear();
@@ -231,6 +238,7 @@ void DRTIonBeamSequence::Item::clear()
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
         ManufacturerModelName.clear();
         DeviceSerialNumber.clear();
         PrimaryDosimeterUnit.clear();
@@ -279,6 +287,7 @@ OFBool DRTIonBeamSequence::Item::isEmpty()
 {
     return BeamNumber.isEmpty() &&
            BeamName.isEmpty() &&
+           EntityLongLabel.isEmpty() &&
            BeamDescription.isEmpty() &&
            BeamType.isEmpty() &&
            RadiationType.isEmpty() &&
@@ -292,6 +301,7 @@ OFBool DRTIonBeamSequence::Item::isEmpty()
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty() &&
            ManufacturerModelName.isEmpty() &&
            DeviceSerialNumber.isEmpty() &&
            PrimaryDosimeterUnit.isEmpty() &&
@@ -350,6 +360,7 @@ OFCondition DRTIonBeamSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, BeamNumber, "1", "1", "IonBeamSequence");
         getAndCheckElementFromDataset(item, BeamName, "1", "1", "IonBeamSequence");
+        getAndCheckElementFromDataset(item, EntityLongLabel, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, BeamDescription, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, BeamType, "1", "1", "IonBeamSequence");
         getAndCheckElementFromDataset(item, RadiationType, "1", "1", "IonBeamSequence");
@@ -363,6 +374,7 @@ OFCondition DRTIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "IonBeamSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "IonBeamSequence");
         getAndCheckElementFromDataset(item, PrimaryDosimeterUnit, "1", "1", "IonBeamSequence");
@@ -417,6 +429,7 @@ OFCondition DRTIonBeamSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(BeamNumber), "1", "1", "IonBeamSequence");
         addElementToDataset(result, item, new DcmLongString(BeamName), "1", "1", "IonBeamSequence");
+        addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmShortText(BeamDescription), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(BeamType), "1", "1", "IonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(RadiationType), "1", "1", "IonBeamSequence");
@@ -430,6 +443,7 @@ OFCondition DRTIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "IonBeamSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "IonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(PrimaryDosimeterUnit), "1", "1", "IonBeamSequence");
@@ -529,6 +543,15 @@ OFCondition DRTIonBeamSequence::Item::getDeviceSerialNumber(OFString &value, con
 }
 
 
+OFCondition DRTIonBeamSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(EntityLongLabel, value, pos);
+}
+
+
 OFCondition DRTIonBeamSequence::Item::getFinalCumulativeMetersetWeight(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -1026,6 +1049,19 @@ OFCondition DRTIonBeamSequence::Item::setDeviceSerialNumber(const OFString &valu
 }
 
 
+OFCondition DRTIonBeamSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = EntityLongLabel.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTIonBeamSequence::Item::setFinalCumulativeMetersetWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1577,10 +1613,12 @@ OFCondition DRTIonBeamSequence::gotoFirstItem()
 OFCondition DRTIonBeamSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index c21f51de5aecd872d8c34d4f21d16f01b620c969..9c67ebd30c1c5482f88ab35a51f25540f6a28074 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -50,6 +50,7 @@ DRTIonControlPointDeliverySequence::Item::Item(const OFBool emptyDefaultItem)
     ScanSpotPositionMap(DCM_ScanSpotPositionMap),
     ScanSpotPrescribedIndices(DCM_ScanSpotPrescribedIndices),
     ScanSpotReordered(DCM_ScanSpotReordered),
+    ScanSpotSizesDelivered(DCM_ScanSpotSizesDelivered),
     ScanSpotTimeOffset(DCM_ScanSpotTimeOffset),
     ScanSpotTuneID(DCM_ScanSpotTuneID),
     ScanningSpotSize(DCM_ScanningSpotSize),
@@ -99,6 +100,7 @@ DRTIonControlPointDeliverySequence::Item::Item(const Item &copy)
     ScanSpotPositionMap(copy.ScanSpotPositionMap),
     ScanSpotPrescribedIndices(copy.ScanSpotPrescribedIndices),
     ScanSpotReordered(copy.ScanSpotReordered),
+    ScanSpotSizesDelivered(copy.ScanSpotSizesDelivered),
     ScanSpotTimeOffset(copy.ScanSpotTimeOffset),
     ScanSpotTuneID(copy.ScanSpotTuneID),
     ScanningSpotSize(copy.ScanningSpotSize),
@@ -156,6 +158,7 @@ DRTIonControlPointDeliverySequence::Item &DRTIonControlPointDeliverySequence::It
         ScanSpotPositionMap = copy.ScanSpotPositionMap;
         ScanSpotPrescribedIndices = copy.ScanSpotPrescribedIndices;
         ScanSpotReordered = copy.ScanSpotReordered;
+        ScanSpotSizesDelivered = copy.ScanSpotSizesDelivered;
         ScanSpotTimeOffset = copy.ScanSpotTimeOffset;
         ScanSpotTuneID = copy.ScanSpotTuneID;
         ScanningSpotSize = copy.ScanningSpotSize;
@@ -206,6 +209,7 @@ void DRTIonControlPointDeliverySequence::Item::clear()
         ScanSpotMetersetsDelivered.clear();
         ScanSpotTimeOffset.clear();
         ScanningSpotSize.clear();
+        ScanSpotSizesDelivered.clear();
         NumberOfPaintings.clear();
         ScanSpotReordered.clear();
         ScanSpotPrescribedIndices.clear();
@@ -255,6 +259,7 @@ OFBool DRTIonControlPointDeliverySequence::Item::isEmpty()
            ScanSpotMetersetsDelivered.isEmpty() &&
            ScanSpotTimeOffset.isEmpty() &&
            ScanningSpotSize.isEmpty() &&
+           ScanSpotSizesDelivered.isEmpty() &&
            NumberOfPaintings.isEmpty() &&
            ScanSpotReordered.isEmpty() &&
            ScanSpotPrescribedIndices.isEmpty() &&
@@ -314,6 +319,7 @@ OFCondition DRTIonControlPointDeliverySequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ScanSpotMetersetsDelivered, "1-n", "1C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, ScanSpotTimeOffset, "1-n", "3", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, ScanningSpotSize, "2", "3", "IonControlPointDeliverySequence");
+        getAndCheckElementFromDataset(item, ScanSpotSizesDelivered, "2-2n", "3", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, NumberOfPaintings, "1", "1C", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, ScanSpotReordered, "1", "3", "IonControlPointDeliverySequence");
         getAndCheckElementFromDataset(item, ScanSpotPrescribedIndices, "1-n", "1C", "IonControlPointDeliverySequence");
@@ -369,6 +375,7 @@ OFCondition DRTIonControlPointDeliverySequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotMetersetsDelivered), "1-n", "1C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotTimeOffset), "1-n", "3", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmFloatingPointSingle(ScanningSpotSize), "2", "3", "IonControlPointDeliverySequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(ScanSpotSizesDelivered), "2-2n", "3", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmIntegerString(NumberOfPaintings), "1", "1C", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmCodeString(ScanSpotReordered), "1", "3", "IonControlPointDeliverySequence");
         addElementToDataset(result, item, new DcmIntegerString(ScanSpotPrescribedIndices), "1-n", "1C", "IonControlPointDeliverySequence");
@@ -688,6 +695,15 @@ OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotReordered(OFStr
 }
 
 
+OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotSizesDelivered(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, ScanSpotSizesDelivered).getFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointDeliverySequence::Item::getScanSpotTimeOffset(Float32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
@@ -1112,6 +1128,15 @@ OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotReordered(const
 }
 
 
+OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotSizesDelivered(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ScanSpotSizesDelivered.putFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointDeliverySequence::Item::setScanSpotTimeOffset(const Float32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
@@ -1398,10 +1423,12 @@ OFCondition DRTIonControlPointDeliverySequence::gotoFirstItem()
 OFCondition DRTIonControlPointDeliverySequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 8380160bb1dbcbac246a08cf1ac3b96de70c6ddc..6f0cc1df8994546e1420bc0cc7a9ac409eca6211 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -1326,10 +1326,12 @@ OFCondition DRTIonControlPointSequence::gotoFirstItem()
 OFCondition DRTIonControlPointSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index f308acb73ce10785862e9185697a337a850b7cfe..3f017ab5c0578d5b56381dddd6869cfa5aeb420a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTInstitutionCodeSequence::gotoFirstItem()
 OFCondition DRTInstitutionCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtidcs.cc b/dcmrt/libsrc/drtidcs.cc
new file mode 100644 (file)
index 0000000..143317c
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTInstitutionalDepartmentTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtidcs.h"
+
+
+// --- item class ---
+
+DRTInstitutionalDepartmentTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::Item::~Item()
+{
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTInstitutionalDepartmentTypeCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTInstitutionalDepartmentTypeCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTInstitutionalDepartmentTypeCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "InstitutionalDepartmentTypeCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTInstitutionalDepartmentTypeCodeSequence::DRTInstitutionalDepartmentTypeCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::DRTInstitutionalDepartmentTypeCodeSequence(const DRTInstitutionalDepartmentTypeCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence &DRTInstitutionalDepartmentTypeCodeSequence::operator=(const DRTInstitutionalDepartmentTypeCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::~DRTInstitutionalDepartmentTypeCodeSequence()
+{
+    clear();
+}
+
+
+void DRTInstitutionalDepartmentTypeCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTInstitutionalDepartmentTypeCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTInstitutionalDepartmentTypeCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTInstitutionalDepartmentTypeCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTInstitutionalDepartmentTypeCodeSequence::Item &DRTInstitutionalDepartmentTypeCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::read(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_InstitutionalDepartmentTypeCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_InstitutionalDepartmentTypeCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTInstitutionalDepartmentTypeCodeSequence::write(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_InstitutionalDepartmentTypeCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index db2224bcc4c58510996e1946150f119e9ce44a85..3008863cb96cf0785b87d853bfcbef7e7c51be49 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -782,10 +782,12 @@ OFCondition DRTIconImageSequence::gotoFirstItem()
 OFCondition DRTIconImageSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index d34aba4d92caf96b338b7287257df274ea10a113..62478c8980d7c15279cb512b3e89e01b090b1db3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@ DRTImageIOD::DRTImageIOD()
     PatientID(DCM_PatientID),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
+    TypeOfPatientID(DCM_TypeOfPatientID),
     PatientBirthDate(DCM_PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
@@ -78,6 +79,7 @@ DRTImageIOD::DRTImageIOD()
     PhysiciansOfRecordIdentificationSequence(),
     NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(),
+    RequestingService(DCM_RequestingService),
     RequestingServiceCodeSequence(),
     ReferencedStudySequence(),
     ProcedureCodeSequence(),
@@ -101,12 +103,15 @@ DRTImageIOD::DRTImageIOD()
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
     IssuerOfAdmissionIDSequence(),
+    ReasonForVisit(DCM_ReasonForVisit),
+    ReasonForVisitCodeSequence(),
     ServiceEpisodeID(DCM_ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(),
     ServiceEpisodeDescription(DCM_ServiceEpisodeDescription),
     PatientSexNeutered(DCM_PatientSexNeutered),
     ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(),
     LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(),
@@ -129,6 +134,7 @@ DRTImageIOD::DRTImageIOD()
     PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(),
     CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(DCM_TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription),
@@ -139,24 +145,30 @@ DRTImageIOD::DRTImageIOD()
     InstitutionAddress(DCM_InstitutionAddress),
     StationName(DCM_StationName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
     UDISequence(),
+    DeviceUID(DCM_DeviceUID),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
     PixelPaddingValue(DCM_PixelPaddingValue),
-    InstanceNumber(DCM_InstanceNumber),
-    PatientOrientation(DCM_PatientOrientation),
-    ContentDate(DCM_ContentDate),
-    ContentTime(DCM_ContentTime),
+    AcquisitionUID(DCM_AcquisitionUID),
     AcquisitionNumber(DCM_AcquisitionNumber),
     AcquisitionDate(DCM_AcquisitionDate),
     AcquisitionTime(DCM_AcquisitionTime),
     AcquisitionDateTime(DCM_AcquisitionDateTime),
+    AcquisitionDuration(DCM_AcquisitionDuration),
     ImagesInAcquisition(DCM_ImagesInAcquisition),
+    IrradiationEventUID(DCM_IrradiationEventUID),
+    InstanceNumber(DCM_InstanceNumber),
+    PatientOrientation(DCM_PatientOrientation),
+    ContentDate(DCM_ContentDate),
+    ContentTime(DCM_ContentTime),
     ImageComments(DCM_ImageComments),
     QualityControlImage(DCM_QualityControlImage),
     BurnedInAnnotation(DCM_BurnedInAnnotation),
@@ -166,8 +178,10 @@ DRTImageIOD::DRTImageIOD()
     LossyImageCompressionMethod(DCM_LossyImageCompressionMethod),
     IconImageSequence(),
     PresentationLUTShape(DCM_PresentationLUTShape),
-    IrradiationEventUID(DCM_IrradiationEventUID),
     RealWorldValueMappingSequence(),
+    ImageLaterality(DCM_ImageLaterality),
+    AnatomicRegionSequence(),
+    PrimaryAnatomicStructureSequence(),
     ReferencedImageSequence(),
     ReferencedInstanceSequence(),
     DerivationDescription(DCM_DerivationDescription),
@@ -191,6 +205,8 @@ DRTImageIOD::DRTImageIOD()
     PixelData(DCM_PixelData),
     PixelDataProviderURL(DCM_PixelDataProviderURL),
     PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit),
+    ExtendedOffsetTable(DCM_ExtendedOffsetTable),
+    ExtendedOffsetTableLengths(DCM_ExtendedOffsetTableLengths),
     ContrastBolusAgent(DCM_ContrastBolusAgent),
     ContrastBolusAgentSequence(),
     ContrastBolusRoute(DCM_ContrastBolusRoute),
@@ -218,6 +234,7 @@ DRTImageIOD::DRTImageIOD()
     NumberOfFrames(DCM_NumberOfFrames),
     FrameIncrementPointer(DCM_FrameIncrementPointer),
     StereoPairsPresent(DCM_StereoPairsPresent),
+    EncapsulatedPixelDataValueTotalLength(DCM_EncapsulatedPixelDataValueTotalLength),
     DeviceSequence(),
     SamplesPerPixel(DCM_SamplesPerPixel),
     PhotometricInterpretation(DCM_PhotometricInterpretation),
@@ -244,6 +261,8 @@ DRTImageIOD::DRTImageIOD()
     RadiationMachineSAD(DCM_RadiationMachineSAD),
     RadiationMachineSSD(DCM_RadiationMachineSSD),
     RTImageSID(DCM_RTImageSID),
+    EnhancedRTBeamLimitingDeviceDefinitionFlag(DCM_EnhancedRTBeamLimitingDeviceDefinitionFlag),
+    EnhancedRTBeamLimitingDeviceSequence(),
     SourceToReferenceObjectDistance(DCM_SourceToReferenceObjectDistance),
     ReferencedRTPlanSequence(),
     ReferencedBeamNumber(DCM_ReferencedBeamNumber),
@@ -310,6 +329,10 @@ DRTImageIOD::DRTImageIOD()
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
     PrivateDataElementCharacteristicsSequence(),
+    InstanceOriginStatus(DCM_InstanceOriginStatus),
+    BarcodeValue(DCM_BarcodeValue),
+    ReferencedDefinedProtocolSequence(),
+    ReferencedPerformedProtocolSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence(),
     FrameExtractionSequence()
@@ -324,6 +347,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     PatientID(copy.PatientID),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
+    TypeOfPatientID(copy.TypeOfPatientID),
     PatientBirthDate(copy.PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
@@ -380,6 +404,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence),
     NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence),
+    RequestingService(copy.RequestingService),
     RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence),
     ReferencedStudySequence(copy.ReferencedStudySequence),
     ProcedureCodeSequence(copy.ProcedureCodeSequence),
@@ -403,12 +428,15 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
     IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence),
+    ReasonForVisit(copy.ReasonForVisit),
+    ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence),
     ServiceEpisodeID(copy.ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence),
     ServiceEpisodeDescription(copy.ServiceEpisodeDescription),
     PatientSexNeutered(copy.PatientSexNeutered),
     ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence),
     LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence),
@@ -431,6 +459,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence),
     CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(copy.TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription),
@@ -441,24 +470,30 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     InstitutionAddress(copy.InstitutionAddress),
     StationName(copy.StationName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
     UDISequence(copy.UDISequence),
+    DeviceUID(copy.DeviceUID),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
     PixelPaddingValue(copy.PixelPaddingValue),
-    InstanceNumber(copy.InstanceNumber),
-    PatientOrientation(copy.PatientOrientation),
-    ContentDate(copy.ContentDate),
-    ContentTime(copy.ContentTime),
+    AcquisitionUID(copy.AcquisitionUID),
     AcquisitionNumber(copy.AcquisitionNumber),
     AcquisitionDate(copy.AcquisitionDate),
     AcquisitionTime(copy.AcquisitionTime),
     AcquisitionDateTime(copy.AcquisitionDateTime),
+    AcquisitionDuration(copy.AcquisitionDuration),
     ImagesInAcquisition(copy.ImagesInAcquisition),
+    IrradiationEventUID(copy.IrradiationEventUID),
+    InstanceNumber(copy.InstanceNumber),
+    PatientOrientation(copy.PatientOrientation),
+    ContentDate(copy.ContentDate),
+    ContentTime(copy.ContentTime),
     ImageComments(copy.ImageComments),
     QualityControlImage(copy.QualityControlImage),
     BurnedInAnnotation(copy.BurnedInAnnotation),
@@ -468,8 +503,10 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     LossyImageCompressionMethod(copy.LossyImageCompressionMethod),
     IconImageSequence(copy.IconImageSequence),
     PresentationLUTShape(copy.PresentationLUTShape),
-    IrradiationEventUID(copy.IrradiationEventUID),
     RealWorldValueMappingSequence(copy.RealWorldValueMappingSequence),
+    ImageLaterality(copy.ImageLaterality),
+    AnatomicRegionSequence(copy.AnatomicRegionSequence),
+    PrimaryAnatomicStructureSequence(copy.PrimaryAnatomicStructureSequence),
     ReferencedImageSequence(copy.ReferencedImageSequence),
     ReferencedInstanceSequence(copy.ReferencedInstanceSequence),
     DerivationDescription(copy.DerivationDescription),
@@ -493,6 +530,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     PixelData(copy.PixelData),
     PixelDataProviderURL(copy.PixelDataProviderURL),
     PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit),
+    ExtendedOffsetTable(copy.ExtendedOffsetTable),
+    ExtendedOffsetTableLengths(copy.ExtendedOffsetTableLengths),
     ContrastBolusAgent(copy.ContrastBolusAgent),
     ContrastBolusAgentSequence(copy.ContrastBolusAgentSequence),
     ContrastBolusRoute(copy.ContrastBolusRoute),
@@ -520,6 +559,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     NumberOfFrames(copy.NumberOfFrames),
     FrameIncrementPointer(copy.FrameIncrementPointer),
     StereoPairsPresent(copy.StereoPairsPresent),
+    EncapsulatedPixelDataValueTotalLength(copy.EncapsulatedPixelDataValueTotalLength),
     DeviceSequence(copy.DeviceSequence),
     SamplesPerPixel(copy.SamplesPerPixel),
     PhotometricInterpretation(copy.PhotometricInterpretation),
@@ -546,6 +586,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     RadiationMachineSAD(copy.RadiationMachineSAD),
     RadiationMachineSSD(copy.RadiationMachineSSD),
     RTImageSID(copy.RTImageSID),
+    EnhancedRTBeamLimitingDeviceDefinitionFlag(copy.EnhancedRTBeamLimitingDeviceDefinitionFlag),
+    EnhancedRTBeamLimitingDeviceSequence(copy.EnhancedRTBeamLimitingDeviceSequence),
     SourceToReferenceObjectDistance(copy.SourceToReferenceObjectDistance),
     ReferencedRTPlanSequence(copy.ReferencedRTPlanSequence),
     ReferencedBeamNumber(copy.ReferencedBeamNumber),
@@ -612,6 +654,10 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
     PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
+    InstanceOriginStatus(copy.InstanceOriginStatus),
+    BarcodeValue(copy.BarcodeValue),
+    ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence),
+    ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence),
     FrameExtractionSequence(copy.FrameExtractionSequence)
@@ -632,6 +678,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         PatientID = copy.PatientID;
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
+        TypeOfPatientID = copy.TypeOfPatientID;
         PatientBirthDate = copy.PatientBirthDate;
         PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
         PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
@@ -688,6 +735,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence;
         NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy;
         PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence;
+        RequestingService = copy.RequestingService;
         RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence;
         ReferencedStudySequence = copy.ReferencedStudySequence;
         ProcedureCodeSequence = copy.ProcedureCodeSequence;
@@ -711,12 +759,15 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
         IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence;
+        ReasonForVisit = copy.ReasonForVisit;
+        ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence;
         ServiceEpisodeID = copy.ServiceEpisodeID;
         IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence;
         ServiceEpisodeDescription = copy.ServiceEpisodeDescription;
         PatientSexNeutered = copy.PatientSexNeutered;
         ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID;
         ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription;
+        ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence;
         LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent;
         LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType;
         ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence;
@@ -739,6 +790,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription;
         PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence;
         CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep;
+        TreatmentSessionUID = copy.TreatmentSessionUID;
         ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName;
         ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID;
         ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription;
@@ -749,24 +801,30 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         InstitutionAddress = copy.InstitutionAddress;
         StationName = copy.StationName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
         UDISequence = copy.UDISequence;
+        DeviceUID = copy.DeviceUID;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
         PixelPaddingValue = copy.PixelPaddingValue;
-        InstanceNumber = copy.InstanceNumber;
-        PatientOrientation = copy.PatientOrientation;
-        ContentDate = copy.ContentDate;
-        ContentTime = copy.ContentTime;
+        AcquisitionUID = copy.AcquisitionUID;
         AcquisitionNumber = copy.AcquisitionNumber;
         AcquisitionDate = copy.AcquisitionDate;
         AcquisitionTime = copy.AcquisitionTime;
         AcquisitionDateTime = copy.AcquisitionDateTime;
+        AcquisitionDuration = copy.AcquisitionDuration;
         ImagesInAcquisition = copy.ImagesInAcquisition;
+        IrradiationEventUID = copy.IrradiationEventUID;
+        InstanceNumber = copy.InstanceNumber;
+        PatientOrientation = copy.PatientOrientation;
+        ContentDate = copy.ContentDate;
+        ContentTime = copy.ContentTime;
         ImageComments = copy.ImageComments;
         QualityControlImage = copy.QualityControlImage;
         BurnedInAnnotation = copy.BurnedInAnnotation;
@@ -776,8 +834,10 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         LossyImageCompressionMethod = copy.LossyImageCompressionMethod;
         IconImageSequence = copy.IconImageSequence;
         PresentationLUTShape = copy.PresentationLUTShape;
-        IrradiationEventUID = copy.IrradiationEventUID;
         RealWorldValueMappingSequence = copy.RealWorldValueMappingSequence;
+        ImageLaterality = copy.ImageLaterality;
+        AnatomicRegionSequence = copy.AnatomicRegionSequence;
+        PrimaryAnatomicStructureSequence = copy.PrimaryAnatomicStructureSequence;
         ReferencedImageSequence = copy.ReferencedImageSequence;
         ReferencedInstanceSequence = copy.ReferencedInstanceSequence;
         DerivationDescription = copy.DerivationDescription;
@@ -801,6 +861,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         PixelData = copy.PixelData;
         PixelDataProviderURL = copy.PixelDataProviderURL;
         PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit;
+        ExtendedOffsetTable = copy.ExtendedOffsetTable;
+        ExtendedOffsetTableLengths = copy.ExtendedOffsetTableLengths;
         ContrastBolusAgent = copy.ContrastBolusAgent;
         ContrastBolusAgentSequence = copy.ContrastBolusAgentSequence;
         ContrastBolusRoute = copy.ContrastBolusRoute;
@@ -828,6 +890,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         NumberOfFrames = copy.NumberOfFrames;
         FrameIncrementPointer = copy.FrameIncrementPointer;
         StereoPairsPresent = copy.StereoPairsPresent;
+        EncapsulatedPixelDataValueTotalLength = copy.EncapsulatedPixelDataValueTotalLength;
         DeviceSequence = copy.DeviceSequence;
         SamplesPerPixel = copy.SamplesPerPixel;
         PhotometricInterpretation = copy.PhotometricInterpretation;
@@ -854,6 +917,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         RadiationMachineSAD = copy.RadiationMachineSAD;
         RadiationMachineSSD = copy.RadiationMachineSSD;
         RTImageSID = copy.RTImageSID;
+        EnhancedRTBeamLimitingDeviceDefinitionFlag = copy.EnhancedRTBeamLimitingDeviceDefinitionFlag;
+        EnhancedRTBeamLimitingDeviceSequence = copy.EnhancedRTBeamLimitingDeviceSequence;
         SourceToReferenceObjectDistance = copy.SourceToReferenceObjectDistance;
         ReferencedRTPlanSequence = copy.ReferencedRTPlanSequence;
         ReferencedBeamNumber = copy.ReferencedBeamNumber;
@@ -920,6 +985,10 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
         PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
+        InstanceOriginStatus = copy.InstanceOriginStatus;
+        BarcodeValue = copy.BarcodeValue;
+        ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence;
+        ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
         FrameExtractionSequence = copy.FrameExtractionSequence;
@@ -935,6 +1004,7 @@ void DRTImageIOD::clear()
     PatientID.clear();
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
+    TypeOfPatientID.clear();
     PatientBirthDate.clear();
     PatientBirthDateInAlternativeCalendar.clear();
     PatientDeathDateInAlternativeCalendar.clear();
@@ -991,6 +1061,7 @@ void DRTImageIOD::clear()
     PhysiciansOfRecordIdentificationSequence.clear();
     NameOfPhysiciansReadingStudy.clear();
     PhysiciansReadingStudyIdentificationSequence.clear();
+    RequestingService.clear();
     RequestingServiceCodeSequence.clear();
     ReferencedStudySequence.clear();
     ProcedureCodeSequence.clear();
@@ -1014,12 +1085,15 @@ void DRTImageIOD::clear()
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
     IssuerOfAdmissionIDSequence.clear();
+    ReasonForVisit.clear();
+    ReasonForVisitCodeSequence.clear();
     ServiceEpisodeID.clear();
     IssuerOfServiceEpisodeIDSequence.clear();
     ServiceEpisodeDescription.clear();
     PatientSexNeutered.clear();
     ClinicalTrialTimePointID.clear();
     ClinicalTrialTimePointDescription.clear();
+    ClinicalTrialTimePointTypeCodeSequence.clear();
     LongitudinalTemporalOffsetFromEvent.clear();
     LongitudinalTemporalEventType.clear();
     ConsentForClinicalTrialUseSequence.clear();
@@ -1042,6 +1116,7 @@ void DRTImageIOD::clear()
     PerformedProcedureStepDescription.clear();
     PerformedProtocolCodeSequence.clear();
     CommentsOnThePerformedProcedureStep.clear();
+    TreatmentSessionUID.clear();
     ClinicalTrialCoordinatingCenterName.clear();
     ClinicalTrialSeriesID.clear();
     ClinicalTrialSeriesDescription.clear();
@@ -1052,25 +1127,31 @@ void DRTImageIOD::clear()
     InstitutionAddress.clear();
     StationName.clear();
     InstitutionalDepartmentName.clear();
+    InstitutionalDepartmentTypeCodeSequence.clear();
     ManufacturerModelName.clear();
+    ManufacturerDeviceClassUID.clear();
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
     UDISequence.clear();
+    DeviceUID.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
     PixelPaddingValue.clear();
-    InstanceNumber.clear();
-    PatientOrientation.clear();
-    ContentDate.clear();
-    ContentTime.clear();
-    ImageType.clear();
+    AcquisitionUID.clear();
     AcquisitionNumber.clear();
     AcquisitionDate.clear();
     AcquisitionTime.clear();
     AcquisitionDateTime.clear();
+    AcquisitionDuration.clear();
     ImagesInAcquisition.clear();
+    IrradiationEventUID.clear();
+    InstanceNumber.clear();
+    PatientOrientation.clear();
+    ContentDate.clear();
+    ContentTime.clear();
+    ImageType.clear();
     ImageComments.clear();
     QualityControlImage.clear();
     BurnedInAnnotation.clear();
@@ -1080,8 +1161,10 @@ void DRTImageIOD::clear()
     LossyImageCompressionMethod.clear();
     IconImageSequence.clear();
     PresentationLUTShape.clear();
-    IrradiationEventUID.clear();
     RealWorldValueMappingSequence.clear();
+    ImageLaterality.clear();
+    AnatomicRegionSequence.clear();
+    PrimaryAnatomicStructureSequence.clear();
     ReferencedImageSequence.clear();
     ReferencedInstanceSequence.clear();
     DerivationDescription.clear();
@@ -1111,6 +1194,8 @@ void DRTImageIOD::clear()
     PixelData.clear();
     PixelDataProviderURL.clear();
     PixelPaddingRangeLimit.clear();
+    ExtendedOffsetTable.clear();
+    ExtendedOffsetTableLengths.clear();
     ContrastBolusAgent.clear();
     ContrastBolusAgentSequence.clear();
     ContrastBolusRoute.clear();
@@ -1138,6 +1223,7 @@ void DRTImageIOD::clear()
     NumberOfFrames.clear();
     FrameIncrementPointer.clear();
     StereoPairsPresent.clear();
+    EncapsulatedPixelDataValueTotalLength.clear();
     DeviceSequence.clear();
     PixelIntensityRelationship.clear();
     PixelIntensityRelationshipSign.clear();
@@ -1157,6 +1243,8 @@ void DRTImageIOD::clear()
     RadiationMachineSAD.clear();
     RadiationMachineSSD.clear();
     RTImageSID.clear();
+    EnhancedRTBeamLimitingDeviceDefinitionFlag.clear();
+    EnhancedRTBeamLimitingDeviceSequence.clear();
     SourceToReferenceObjectDistance.clear();
     ReferencedRTPlanSequence.clear();
     ReferencedBeamNumber.clear();
@@ -1223,6 +1311,10 @@ void DRTImageIOD::clear()
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
     PrivateDataElementCharacteristicsSequence.clear();
+    InstanceOriginStatus.clear();
+    BarcodeValue.clear();
+    ReferencedDefinedProtocolSequence.clear();
+    ReferencedPerformedProtocolSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
     FrameExtractionSequence.clear();
@@ -1287,27 +1379,35 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule");
+        InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
         UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, PixelPaddingValue, "1", "1C", "GeneralEquipmentModule");
 
+        // --- GeneralAcquisitionModule (M) ---
+        getAndCheckElementFromDataset(dataset, AcquisitionUID, "1", "3", "GeneralAcquisitionModule");
+        getAndCheckElementFromDataset(dataset, AcquisitionNumber, "1", "3", "GeneralAcquisitionModule");
+        getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralAcquisitionModule");
+        getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralAcquisitionModule");
+        getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralAcquisitionModule");
+        getAndCheckElementFromDataset(dataset, AcquisitionDuration, "1", "3", "GeneralAcquisitionModule");
+        getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralAcquisitionModule");
+        getAndCheckElementFromDataset(dataset, IrradiationEventUID, "1-n", "3", "GeneralAcquisitionModule");
+
         // --- GeneralImageModule (M) ---
         getAndCheckElementFromDataset(dataset, InstanceNumber, "1", "2", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, PatientOrientation, "2", "2C", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ContentDate, "1", "2C", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ContentTime, "1", "2C", "GeneralImageModule");
         // getAndCheckElementFromDataset(dataset, ImageType, "2-n", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionNumber, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionDate, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionTime, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, AcquisitionDateTime, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, ImagesInAcquisition, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, ImageComments, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, QualityControlImage, "1", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, BurnedInAnnotation, "1", "3", "GeneralImageModule");
@@ -1317,8 +1417,10 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, LossyImageCompressionMethod, "1-n", "3", "GeneralImageModule");
         IconImageSequence.read(dataset, "1-n", "3", "GeneralImageModule");
         getAndCheckElementFromDataset(dataset, PresentationLUTShape, "1", "3", "GeneralImageModule");
-        getAndCheckElementFromDataset(dataset, IrradiationEventUID, "1-n", "3", "GeneralImageModule");
         RealWorldValueMappingSequence.read(dataset, "1-n", "3", "GeneralImageModule");
+        getAndCheckElementFromDataset(dataset, ImageLaterality, "1", "3", "GeneralImageModule");
+        AnatomicRegionSequence.read(dataset, "1-n", "3", "GeneralImageModule");
+        PrimaryAnatomicStructureSequence.read(dataset, "1-n", "3", "GeneralImageModule");
 
         // --- GeneralReferenceModule (U) ---
         ReferencedImageSequence.read(dataset, "1-n", "3", "GeneralReferenceModule");
@@ -1352,6 +1454,8 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PixelData, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, PixelDataProviderURL, "1", "1C", "ImagePixelModule");
         getAndCheckElementFromDataset(dataset, PixelPaddingRangeLimit, "1", "1C", "ImagePixelModule");
+        getAndCheckElementFromDataset(dataset, ExtendedOffsetTable, "1", "3", "ImagePixelModule");
+        getAndCheckElementFromDataset(dataset, ExtendedOffsetTableLengths, "1", "1C", "ImagePixelModule");
 
         // --- ContrastBolusModule (C) ---
         if (dataset.tagExists(DCM_ContrastBolusAgent))
@@ -1391,6 +1495,7 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
             getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule");
+            getAndCheckElementFromDataset(dataset, EncapsulatedPixelDataValueTotalLength, "1", "3", "MultiFrameModule");
         }
 
         // --- DeviceModule (U) ---
@@ -1425,6 +1530,8 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RadiationMachineSAD, "1", "2", "RTImageModule");
         getAndCheckElementFromDataset(dataset, RadiationMachineSSD, "1", "3", "RTImageModule");
         getAndCheckElementFromDataset(dataset, RTImageSID, "1", "2", "RTImageModule");
+        getAndCheckElementFromDataset(dataset, EnhancedRTBeamLimitingDeviceDefinitionFlag, "1", "3", "RTImageModule");
+        EnhancedRTBeamLimitingDeviceSequence.read(dataset, "1-n", "1C", "RTImageModule");
         getAndCheckElementFromDataset(dataset, SourceToReferenceObjectDistance, "1", "3", "RTImageModule");
         ReferencedRTPlanSequence.read(dataset, "1-n", "3", "RTImageModule");
         getAndCheckElementFromDataset(dataset, ReferencedBeamNumber, "1", "3", "RTImageModule");
@@ -1503,6 +1610,10 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
         PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule");
+        ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
+        ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -1527,6 +1638,7 @@ OFCondition DRTImageIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
@@ -1603,6 +1715,7 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset)
         PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule");
         PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule");
         RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1628,6 +1741,8 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
         IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule");
+        ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule");
         IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule");
@@ -1638,6 +1753,7 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule");
+            ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule");
             ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
@@ -1673,6 +1789,7 @@ OFCondition DRTImageIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule");
         PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName))
@@ -1700,6 +1817,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
@@ -1763,6 +1881,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule");
         if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule");
         if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1790,6 +1909,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule");
+            if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule");
@@ -1801,6 +1922,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule");
+            if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule");
             if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
@@ -1826,6 +1948,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/))
@@ -1848,27 +1971,35 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
         if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingValue), "1", "1C", "GeneralEquipmentModule");
 
+        // --- GeneralAcquisitionModule (M) ---
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(AcquisitionUID), "1", "3", "GeneralAcquisitionModule");
+        addElementToDataset(result, dataset, new DcmIntegerString(AcquisitionNumber), "1", "3", "GeneralAcquisitionModule");
+        addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralAcquisitionModule");
+        addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralAcquisitionModule");
+        addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralAcquisitionModule");
+        addElementToDataset(result, dataset, new DcmFloatingPointDouble(AcquisitionDuration), "1", "3", "GeneralAcquisitionModule");
+        addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralAcquisitionModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(IrradiationEventUID), "1-n", "3", "GeneralAcquisitionModule");
+
         // --- GeneralImageModule (M) ---
         addElementToDataset(result, dataset, new DcmIntegerString(InstanceNumber), "1", "2", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmCodeString(PatientOrientation), "2", "2C", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmDate(ContentDate), "1", "2C", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmTime(ContentTime), "1", "2C", "GeneralImageModule");
         // addElementToDataset(result, dataset, new DcmCodeString(ImageType), "2-n", "3", "GeneralImageModule");
-        addElementToDataset(result, dataset, new DcmIntegerString(AcquisitionNumber), "1", "3", "GeneralImageModule");
-        addElementToDataset(result, dataset, new DcmDate(AcquisitionDate), "1", "3", "GeneralImageModule");
-        addElementToDataset(result, dataset, new DcmTime(AcquisitionTime), "1", "3", "GeneralImageModule");
-        addElementToDataset(result, dataset, new DcmDateTime(AcquisitionDateTime), "1", "3", "GeneralImageModule");
-        addElementToDataset(result, dataset, new DcmIntegerString(ImagesInAcquisition), "1", "3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmLongText(ImageComments), "1", "3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmCodeString(QualityControlImage), "1", "3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmCodeString(BurnedInAnnotation), "1", "3", "GeneralImageModule");
@@ -1878,8 +2009,10 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(LossyImageCompressionMethod), "1-n", "3", "GeneralImageModule");
         if (result.good()) result = IconImageSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
         addElementToDataset(result, dataset, new DcmCodeString(PresentationLUTShape), "1", "3", "GeneralImageModule");
-        addElementToDataset(result, dataset, new DcmUniqueIdentifier(IrradiationEventUID), "1-n", "3", "GeneralImageModule");
         if (result.good()) result = RealWorldValueMappingSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
+        addElementToDataset(result, dataset, new DcmCodeString(ImageLaterality), "1", "3", "GeneralImageModule");
+        if (result.good()) result = AnatomicRegionSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
+        if (result.good()) result = PrimaryAnatomicStructureSequence.write(dataset, "1-n" ,"3", "GeneralImageModule");
 
         // --- GeneralReferenceModule (U) ---
         if (isGeneralReferenceModulePresent(OFFalse /*complete*/))
@@ -1916,6 +2049,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmPixelData(PixelData), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmUniversalResourceIdentifierOrLocator(PixelDataProviderURL), "1", "1C", "ImagePixelModule");
         addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingRangeLimit), "1", "1C", "ImagePixelModule");
+        addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTable), "1", "3", "ImagePixelModule");
+        addElementToDataset(result, dataset, new DcmOther64bitVeryLong(ExtendedOffsetTableLengths), "1", "1C", "ImagePixelModule");
 
         // --- ContrastBolusModule (C) ---
         if (isContrastBolusModulePresent(OFFalse /*complete*/))
@@ -1957,6 +2092,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule");
+            addElementToDataset(result, dataset, new DcmUnsigned64bitVeryLong(EncapsulatedPixelDataValueTotalLength), "1", "3", "MultiFrameModule");
         }
 
         // --- DeviceModule (U) ---
@@ -1991,6 +2127,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmDecimalString(RadiationMachineSAD), "1", "2", "RTImageModule");
         addElementToDataset(result, dataset, new DcmDecimalString(RadiationMachineSSD), "1", "3", "RTImageModule");
         addElementToDataset(result, dataset, new DcmDecimalString(RTImageSID), "1", "2", "RTImageModule");
+        addElementToDataset(result, dataset, new DcmCodeString(EnhancedRTBeamLimitingDeviceDefinitionFlag), "1", "3", "RTImageModule");
+        if (result.good()) result = EnhancedRTBeamLimitingDeviceSequence.write(dataset, "1-n" ,"1C", "RTImageModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SourceToReferenceObjectDistance), "1", "3", "RTImageModule");
         if (result.good()) result = ReferencedRTPlanSequence.write(dataset, "1-n" ,"3", "RTImageModule");
         addElementToDataset(result, dataset, new DcmIntegerString(ReferencedBeamNumber), "1", "3", "RTImageModule");
@@ -2075,6 +2213,10 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
         if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule");
+        if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
+        if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -2138,6 +2280,8 @@ OFBool DRTImageIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
            !IssuerOfAdmissionIDSequence.isEmpty() ||
+           !ReasonForVisit.isEmpty() ||
+           !ReasonForVisitCodeSequence.isEmpty() ||
            !ServiceEpisodeID.isEmpty() ||
            !IssuerOfServiceEpisodeIDSequence.isEmpty() ||
            !ServiceEpisodeDescription.isEmpty() ||
@@ -2150,6 +2294,7 @@ OFBool DRTImageIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete*/)
     /* check whether at least one attribute is present */
     return !ClinicalTrialTimePointID.isEmpty() ||
            !ClinicalTrialTimePointDescription.isEmpty() ||
+           !ClinicalTrialTimePointTypeCodeSequence.isEmpty() ||
            !LongitudinalTemporalOffsetFromEvent.isEmpty() ||
            !LongitudinalTemporalEventType.isEmpty() ||
            !ConsentForClinicalTrialUseSequence.isEmpty();
@@ -2238,7 +2383,8 @@ OFBool DRTImageIOD::isMultiFrameModulePresent(const OFBool complete)
         /* check whether at least one attribute is present */
         return !NumberOfFrames.isEmpty() ||
                !FrameIncrementPointer.isEmpty() ||
-               !StereoPairsPresent.isEmpty();
+               !StereoPairsPresent.isEmpty() ||
+               !EncapsulatedPixelDataValueTotalLength.isEmpty();
     }
 }
 
@@ -2320,6 +2466,12 @@ OFCondition DRTImageIOD::getAcquisitionDateTime(OFString &value, const signed lo
 }
 
 
+OFCondition DRTImageIOD::getAcquisitionDuration(Float64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmFloatingPointDouble &, AcquisitionDuration).getFloat64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::getAcquisitionNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(AcquisitionNumber, value, pos);
@@ -2338,6 +2490,12 @@ OFCondition DRTImageIOD::getAcquisitionTime(OFString &value, const signed long p
 }
 
 
+OFCondition DRTImageIOD::getAcquisitionUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(AcquisitionUID, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getActualFrameDuration(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ActualFrameDuration, value, pos);
@@ -2386,6 +2544,12 @@ OFCondition DRTImageIOD::getAuthorizationEquipmentCertificationNumber(OFString &
 }
 
 
+OFCondition DRTImageIOD::getBarcodeValue(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(BarcodeValue, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getBeamLimitingDeviceAngle(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(BeamLimitingDeviceAngle, value, pos);
@@ -2707,6 +2871,12 @@ OFCondition DRTImageIOD::getDeviceSerialNumber(OFString &value, const signed lon
 }
 
 
+OFCondition DRTImageIOD::getDeviceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getEffectiveDuration(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EffectiveDuration, value, pos);
@@ -2719,6 +2889,12 @@ OFCondition DRTImageIOD::getEffectiveDuration(Float64 &value, const unsigned lon
 }
 
 
+OFCondition DRTImageIOD::getEncapsulatedPixelDataValueTotalLength(Uint64 &value, const unsigned long pos) const
+{
+    return OFconst_cast(DcmUnsigned64bitVeryLong &, EncapsulatedPixelDataValueTotalLength).getUint64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::getEndCumulativeMetersetWeight(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EndCumulativeMetersetWeight, value, pos);
@@ -2731,6 +2907,12 @@ OFCondition DRTImageIOD::getEndCumulativeMetersetWeight(Float64 &value, const un
 }
 
 
+OFCondition DRTImageIOD::getEnhancedRTBeamLimitingDeviceDefinitionFlag(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(EnhancedRTBeamLimitingDeviceDefinitionFlag, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getEthnicGroup(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EthnicGroup, value, pos);
@@ -2755,6 +2937,36 @@ OFCondition DRTImageIOD::getExposureTimeInms(Float64 &value, const unsigned long
 }
 
 
+OFCondition DRTImageIOD::getExtendedOffsetTable(Uint64 *&value, unsigned long *count) const
+{
+    OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getUint64Array(value);
+    /* set optional count parameter */
+    if (count != NULL)
+    {
+        if (result.good())
+            *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTable).getLength() / sizeof(Uint64);
+        else
+            *count = 0;
+    }
+    return result;
+}
+
+
+OFCondition DRTImageIOD::getExtendedOffsetTableLengths(Uint64 *&value, unsigned long *count) const
+{
+    OFCondition result = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getUint64Array(value);
+    /* set optional count parameter */
+    if (count != NULL)
+    {
+        if (result.good())
+            *count = OFconst_cast(DcmOther64bitVeryLong &, ExtendedOffsetTableLengths).getLength() / sizeof(Uint64);
+        else
+            *count = 0;
+    }
+    return result;
+}
+
+
 OFCondition DRTImageIOD::getFractionNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(FractionNumber, value, pos);
@@ -2893,6 +3105,12 @@ OFCondition DRTImageIOD::getImageComments(OFString &value, const signed long pos
 }
 
 
+OFCondition DRTImageIOD::getImageLaterality(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ImageLaterality, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getImagePlanePixelSpacing(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ImagePlanePixelSpacing, value, pos);
@@ -2977,6 +3195,12 @@ OFCondition DRTImageIOD::getInstanceNumber(Sint32 &value, const unsigned long po
 }
 
 
+OFCondition DRTImageIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(InstanceOriginStatus, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstitutionAddress, value, pos);
@@ -3091,6 +3315,12 @@ OFCondition DRTImageIOD::getManufacturer(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTImageIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getManufacturerModelName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ManufacturerModelName, value, pos);
@@ -3589,6 +3819,12 @@ OFCondition DRTImageIOD::getRadiationMachineSSD(Float64 &value, const unsigned l
 }
 
 
+OFCondition DRTImageIOD::getReasonForVisit(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ReasonForVisit, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getRecognizableVisualFeatures(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(RecognizableVisualFeatures, value, pos);
@@ -3670,6 +3906,12 @@ OFCondition DRTImageIOD::getReportedValuesOrigin(OFString &value, const signed l
 }
 
 
+OFCondition DRTImageIOD::getRequestingService(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(RequestingService, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getRescaleIntercept(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(RescaleIntercept, value, pos);
@@ -4054,6 +4296,18 @@ OFCondition DRTImageIOD::getTimezoneOffsetFromUTC(OFString &value, const signed
 }
 
 
+OFCondition DRTImageIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TreatmentSessionUID, value, pos);
+}
+
+
+OFCondition DRTImageIOD::getTypeOfPatientID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TypeOfPatientID, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getVOILUTFunction(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(VOILUTFunction, value, pos);
@@ -4159,6 +4413,12 @@ OFCondition DRTImageIOD::setAcquisitionDateTime(const OFString &value, const OFB
 }
 
 
+OFCondition DRTImageIOD::setAcquisitionDuration(const Float64 value, const unsigned long pos)
+{
+    return AcquisitionDuration.putFloat64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::setAcquisitionNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
@@ -4177,6 +4437,15 @@ OFCondition DRTImageIOD::setAcquisitionTime(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTImageIOD::setAcquisitionUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = AcquisitionUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setActualFrameDuration(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
@@ -4240,6 +4509,15 @@ OFCondition DRTImageIOD::setAuthorizationEquipmentCertificationNumber(const OFSt
 }
 
 
+OFCondition DRTImageIOD::setBarcodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = BarcodeValue.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setBeamLimitingDeviceAngle(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -4612,6 +4890,15 @@ OFCondition DRTImageIOD::setDeviceSerialNumber(const OFString &value, const OFBo
 }
 
 
+OFCondition DRTImageIOD::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = DeviceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setEffectiveDuration(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -4621,6 +4908,12 @@ OFCondition DRTImageIOD::setEffectiveDuration(const OFString &value, const OFBoo
 }
 
 
+OFCondition DRTImageIOD::setEncapsulatedPixelDataValueTotalLength(const Uint64 value, const unsigned long pos)
+{
+    return EncapsulatedPixelDataValueTotalLength.putUint64(value, pos);
+}
+
+
 OFCondition DRTImageIOD::setEndCumulativeMetersetWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -4630,6 +4923,15 @@ OFCondition DRTImageIOD::setEndCumulativeMetersetWeight(const OFString &value, c
 }
 
 
+OFCondition DRTImageIOD::setEnhancedRTBeamLimitingDeviceDefinitionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = EnhancedRTBeamLimitingDeviceDefinitionFlag.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setEthnicGroup(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -4654,6 +4956,18 @@ OFCondition DRTImageIOD::setExposureTimeInms(const Float64 value, const unsigned
 }
 
 
+OFCondition DRTImageIOD::setExtendedOffsetTable(const Uint64 *value, const unsigned long count)
+{
+    return ExtendedOffsetTable.putUint64Array(value, count);
+}
+
+
+OFCondition DRTImageIOD::setExtendedOffsetTableLengths(const Uint64 *value, const unsigned long count)
+{
+    return ExtendedOffsetTableLengths.putUint64Array(value, count);
+}
+
+
 OFCondition DRTImageIOD::setFractionNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
@@ -4765,6 +5079,15 @@ OFCondition DRTImageIOD::setImageComments(const OFString &value, const OFBool ch
 }
 
 
+OFCondition DRTImageIOD::setImageLaterality(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = ImageLaterality.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setImagePlanePixelSpacing(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "2") : EC_Normal;
@@ -4846,6 +5169,15 @@ OFCondition DRTImageIOD::setInstanceNumber(const OFString &value, const OFBool c
 }
 
 
+OFCondition DRTImageIOD::setInstanceOriginStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = InstanceOriginStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -4975,6 +5307,15 @@ OFCondition DRTImageIOD::setManufacturer(const OFString &value, const OFBool che
 }
 
 
+OFCondition DRTImageIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ManufacturerDeviceClassUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setManufacturerModelName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -5557,6 +5898,15 @@ OFCondition DRTImageIOD::setRadiationMachineSSD(const OFString &value, const OFB
 }
 
 
+OFCondition DRTImageIOD::setReasonForVisit(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = ReasonForVisit.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setRecognizableVisualFeatures(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -5632,6 +5982,15 @@ OFCondition DRTImageIOD::setReportedValuesOrigin(const OFString &value, const OF
 }
 
 
+OFCondition DRTImageIOD::setRequestingService(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = RequestingService.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setRescaleIntercept(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
@@ -6076,6 +6435,24 @@ OFCondition DRTImageIOD::setTimezoneOffsetFromUTC(const OFString &value, const O
 }
 
 
+OFCondition DRTImageIOD::setTreatmentSessionUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSessionUID.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTImageIOD::setTypeOfPatientID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TypeOfPatientID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setVOILUTFunction(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
index 14233d59aeee11b8a1bc73c987886783d8f70fad..4503ddad2be165259fc9e994f1f0818a5fb824ce 100644 (file)
@@ -1,14 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *  Last modified on 2022-01-26 by Riesmeier
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -23,6 +22,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     PatientID(DCM_PatientID),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
+    TypeOfPatientID(DCM_TypeOfPatientID),
     PatientBirthDate(DCM_PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
@@ -79,6 +79,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     PhysiciansOfRecordIdentificationSequence(),
     NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(),
+    RequestingService(DCM_RequestingService),
     RequestingServiceCodeSequence(),
     ReferencedStudySequence(),
     ProcedureCodeSequence(),
@@ -102,12 +103,15 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
     IssuerOfAdmissionIDSequence(),
+    ReasonForVisit(DCM_ReasonForVisit),
+    ReasonForVisitCodeSequence(),
     ServiceEpisodeID(DCM_ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(),
     ServiceEpisodeDescription(DCM_ServiceEpisodeDescription),
     PatientSexNeutered(DCM_PatientSexNeutered),
     ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(),
     LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(),
@@ -130,6 +134,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(),
     CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(DCM_TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription),
@@ -140,11 +145,14 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     InstitutionAddress(DCM_InstitutionAddress),
     StationName(DCM_StationName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
     UDISequence(),
+    DeviceUID(DCM_DeviceUID),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -157,7 +165,8 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     RTPlanTime(DCM_RTPlanTime),
     TreatmentProtocols(DCM_TreatmentProtocols),
     PlanIntent(DCM_PlanIntent),
-    TreatmentSites(DCM_RETIRED_TreatmentSites),
+    TreatmentSite(DCM_TreatmentSite),
+    TreatmentSiteCodeSequence(),
     RTPlanGeometry(DCM_RTPlanGeometry),
     ReferencedStructureSetSequence(),
     ReferencedDoseSequence(),
@@ -207,6 +216,10 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
     PrivateDataElementCharacteristicsSequence(),
+    InstanceOriginStatus(DCM_InstanceOriginStatus),
+    BarcodeValue(DCM_BarcodeValue),
+    ReferencedDefinedProtocolSequence(),
+    ReferencedPerformedProtocolSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -220,6 +233,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     PatientID(copy.PatientID),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
+    TypeOfPatientID(copy.TypeOfPatientID),
     PatientBirthDate(copy.PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
@@ -276,6 +290,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence),
     NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence),
+    RequestingService(copy.RequestingService),
     RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence),
     ReferencedStudySequence(copy.ReferencedStudySequence),
     ProcedureCodeSequence(copy.ProcedureCodeSequence),
@@ -299,12 +314,15 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
     IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence),
+    ReasonForVisit(copy.ReasonForVisit),
+    ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence),
     ServiceEpisodeID(copy.ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence),
     ServiceEpisodeDescription(copy.ServiceEpisodeDescription),
     PatientSexNeutered(copy.PatientSexNeutered),
     ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence),
     LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence),
@@ -327,6 +345,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence),
     CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(copy.TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription),
@@ -337,11 +356,14 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     InstitutionAddress(copy.InstitutionAddress),
     StationName(copy.StationName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
     UDISequence(copy.UDISequence),
+    DeviceUID(copy.DeviceUID),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -354,7 +376,8 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     RTPlanTime(copy.RTPlanTime),
     TreatmentProtocols(copy.TreatmentProtocols),
     PlanIntent(copy.PlanIntent),
-    TreatmentSites(copy.TreatmentSites),
+    TreatmentSite(copy.TreatmentSite),
+    TreatmentSiteCodeSequence(copy.TreatmentSiteCodeSequence),
     RTPlanGeometry(copy.RTPlanGeometry),
     ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence),
     ReferencedDoseSequence(copy.ReferencedDoseSequence),
@@ -404,6 +427,10 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
     PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
+    InstanceOriginStatus(copy.InstanceOriginStatus),
+    BarcodeValue(copy.BarcodeValue),
+    ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence),
+    ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -423,6 +450,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         PatientID = copy.PatientID;
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
+        TypeOfPatientID = copy.TypeOfPatientID;
         PatientBirthDate = copy.PatientBirthDate;
         PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
         PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
@@ -479,6 +507,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence;
         NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy;
         PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence;
+        RequestingService = copy.RequestingService;
         RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence;
         ReferencedStudySequence = copy.ReferencedStudySequence;
         ProcedureCodeSequence = copy.ProcedureCodeSequence;
@@ -502,12 +531,15 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
         IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence;
+        ReasonForVisit = copy.ReasonForVisit;
+        ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence;
         ServiceEpisodeID = copy.ServiceEpisodeID;
         IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence;
         ServiceEpisodeDescription = copy.ServiceEpisodeDescription;
         PatientSexNeutered = copy.PatientSexNeutered;
         ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID;
         ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription;
+        ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence;
         LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent;
         LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType;
         ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence;
@@ -530,6 +562,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription;
         PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence;
         CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep;
+        TreatmentSessionUID = copy.TreatmentSessionUID;
         ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName;
         ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID;
         ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription;
@@ -540,11 +573,14 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         InstitutionAddress = copy.InstitutionAddress;
         StationName = copy.StationName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
         UDISequence = copy.UDISequence;
+        DeviceUID = copy.DeviceUID;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -557,7 +593,8 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         RTPlanTime = copy.RTPlanTime;
         TreatmentProtocols = copy.TreatmentProtocols;
         PlanIntent = copy.PlanIntent;
-        TreatmentSites = copy.TreatmentSites;
+        TreatmentSite = copy.TreatmentSite;
+        TreatmentSiteCodeSequence = copy.TreatmentSiteCodeSequence;
         RTPlanGeometry = copy.RTPlanGeometry;
         ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence;
         ReferencedDoseSequence = copy.ReferencedDoseSequence;
@@ -607,6 +644,10 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
         PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
+        InstanceOriginStatus = copy.InstanceOriginStatus;
+        BarcodeValue = copy.BarcodeValue;
+        ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence;
+        ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -621,6 +662,7 @@ void DRTIonPlanIOD::clear()
     PatientID.clear();
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
+    TypeOfPatientID.clear();
     PatientBirthDate.clear();
     PatientBirthDateInAlternativeCalendar.clear();
     PatientDeathDateInAlternativeCalendar.clear();
@@ -677,6 +719,7 @@ void DRTIonPlanIOD::clear()
     PhysiciansOfRecordIdentificationSequence.clear();
     NameOfPhysiciansReadingStudy.clear();
     PhysiciansReadingStudyIdentificationSequence.clear();
+    RequestingService.clear();
     RequestingServiceCodeSequence.clear();
     ReferencedStudySequence.clear();
     ProcedureCodeSequence.clear();
@@ -700,12 +743,15 @@ void DRTIonPlanIOD::clear()
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
     IssuerOfAdmissionIDSequence.clear();
+    ReasonForVisit.clear();
+    ReasonForVisitCodeSequence.clear();
     ServiceEpisodeID.clear();
     IssuerOfServiceEpisodeIDSequence.clear();
     ServiceEpisodeDescription.clear();
     PatientSexNeutered.clear();
     ClinicalTrialTimePointID.clear();
     ClinicalTrialTimePointDescription.clear();
+    ClinicalTrialTimePointTypeCodeSequence.clear();
     LongitudinalTemporalOffsetFromEvent.clear();
     LongitudinalTemporalEventType.clear();
     ConsentForClinicalTrialUseSequence.clear();
@@ -728,6 +774,7 @@ void DRTIonPlanIOD::clear()
     PerformedProcedureStepDescription.clear();
     PerformedProtocolCodeSequence.clear();
     CommentsOnThePerformedProcedureStep.clear();
+    TreatmentSessionUID.clear();
     ClinicalTrialCoordinatingCenterName.clear();
     ClinicalTrialSeriesID.clear();
     ClinicalTrialSeriesDescription.clear();
@@ -738,11 +785,14 @@ void DRTIonPlanIOD::clear()
     InstitutionAddress.clear();
     StationName.clear();
     InstitutionalDepartmentName.clear();
+    InstitutionalDepartmentTypeCodeSequence.clear();
     ManufacturerModelName.clear();
+    ManufacturerDeviceClassUID.clear();
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
     UDISequence.clear();
+    DeviceUID.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -755,7 +805,8 @@ void DRTIonPlanIOD::clear()
     RTPlanTime.clear();
     TreatmentProtocols.clear();
     PlanIntent.clear();
-    TreatmentSites.clear();
+    TreatmentSite.clear();
+    TreatmentSiteCodeSequence.clear();
     RTPlanGeometry.clear();
     ReferencedStructureSetSequence.clear();
     ReferencedDoseSequence.clear();
@@ -805,6 +856,10 @@ void DRTIonPlanIOD::clear()
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
     PrivateDataElementCharacteristicsSequence.clear();
+    InstanceOriginStatus.clear();
+    BarcodeValue.clear();
+    ReferencedDefinedProtocolSequence.clear();
+    ReferencedPerformedProtocolSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -864,11 +919,14 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule");
+        InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
         UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -883,7 +941,8 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RTPlanTime, "1", "2", "RTGeneralPlanModule");
         getAndCheckElementFromDataset(dataset, TreatmentProtocols, "1-n", "3", "RTGeneralPlanModule");
         getAndCheckElementFromDataset(dataset, PlanIntent, "1", "3", "RTGeneralPlanModule");
-        getAndCheckElementFromDataset(dataset, TreatmentSites, "1-n", "3", "RTGeneralPlanModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSite, "1", "3", "RTGeneralPlanModule");
+        TreatmentSiteCodeSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
         getAndCheckElementFromDataset(dataset, RTPlanGeometry, "1", "1", "RTGeneralPlanModule");
         ReferencedStructureSetSequence.read(dataset, "1-n", "1C", "RTGeneralPlanModule");
         ReferencedDoseSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
@@ -965,6 +1024,10 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
         PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule");
+        ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
+        ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -983,6 +1046,7 @@ OFCondition DRTIonPlanIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
@@ -1059,6 +1123,7 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset)
         PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule");
         PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule");
         RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1084,6 +1149,8 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
         IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule");
+        ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule");
         IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule");
@@ -1094,6 +1161,7 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule");
+            ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule");
             ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
@@ -1129,6 +1197,7 @@ OFCondition DRTIonPlanIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule");
         PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName))
@@ -1156,6 +1225,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
@@ -1219,6 +1289,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule");
         if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule");
         if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1246,6 +1317,8 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule");
+            if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule");
@@ -1257,6 +1330,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule");
+            if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule");
             if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
@@ -1282,6 +1356,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/))
@@ -1301,11 +1376,14 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
         if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1320,7 +1398,8 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(RTPlanTime), "1", "2", "RTGeneralPlanModule");
         addElementToDataset(result, dataset, new DcmLongString(TreatmentProtocols), "1-n", "3", "RTGeneralPlanModule");
         addElementToDataset(result, dataset, new DcmCodeString(PlanIntent), "1", "3", "RTGeneralPlanModule");
-        addElementToDataset(result, dataset, new DcmLongString(TreatmentSites), "1-n", "3", "RTGeneralPlanModule");
+        addElementToDataset(result, dataset, new DcmLongString(TreatmentSite), "1", "3", "RTGeneralPlanModule");
+        if (result.good()) result = TreatmentSiteCodeSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
         addElementToDataset(result, dataset, new DcmCodeString(RTPlanGeometry), "1", "1", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedStructureSetSequence.write(dataset, "1-n" ,"1C", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedDoseSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
@@ -1408,6 +1487,10 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
         if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule");
+        if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
+        if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1465,6 +1548,8 @@ OFBool DRTIonPlanIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
            !IssuerOfAdmissionIDSequence.isEmpty() ||
+           !ReasonForVisit.isEmpty() ||
+           !ReasonForVisitCodeSequence.isEmpty() ||
            !ServiceEpisodeID.isEmpty() ||
            !IssuerOfServiceEpisodeIDSequence.isEmpty() ||
            !ServiceEpisodeDescription.isEmpty() ||
@@ -1477,6 +1562,7 @@ OFBool DRTIonPlanIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete*
     /* check whether at least one attribute is present */
     return !ClinicalTrialTimePointID.isEmpty() ||
            !ClinicalTrialTimePointDescription.isEmpty() ||
+           !ClinicalTrialTimePointTypeCodeSequence.isEmpty() ||
            !LongitudinalTemporalOffsetFromEvent.isEmpty() ||
            !LongitudinalTemporalEventType.isEmpty() ||
            !ConsentForClinicalTrialUseSequence.isEmpty();
@@ -1606,6 +1692,12 @@ OFCondition DRTIonPlanIOD::getAuthorizationEquipmentCertificationNumber(OFString
 }
 
 
+OFCondition DRTIonPlanIOD::getBarcodeValue(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(BarcodeValue, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos);
@@ -1732,6 +1824,12 @@ OFCondition DRTIonPlanIOD::getDeviceSerialNumber(OFString &value, const signed l
 }
 
 
+OFCondition DRTIonPlanIOD::getDeviceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getEthnicGroup(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EthnicGroup, value, pos);
@@ -1792,6 +1890,12 @@ OFCondition DRTIonPlanIOD::getInstanceNumber(Sint32 &value, const unsigned long
 }
 
 
+OFCondition DRTIonPlanIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(InstanceOriginStatus, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstitutionAddress, value, pos);
@@ -1846,6 +1950,12 @@ OFCondition DRTIonPlanIOD::getManufacturer(OFString &value, const signed long po
 }
 
 
+OFCondition DRTIonPlanIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getManufacturerModelName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ManufacturerModelName, value, pos);
@@ -2164,6 +2274,12 @@ OFCondition DRTIonPlanIOD::getRTPlanTime(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTIonPlanIOD::getReasonForVisit(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ReasonForVisit, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getReferringPhysicianName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ReferringPhysicianName, value, pos);
@@ -2176,6 +2292,12 @@ OFCondition DRTIonPlanIOD::getRelatedGeneralSOPClassUID(OFString &value, const s
 }
 
 
+OFCondition DRTIonPlanIOD::getRequestingService(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(RequestingService, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getResponsibleOrganization(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ResponsibleOrganization, value, pos);
@@ -2392,9 +2514,21 @@ OFCondition DRTIonPlanIOD::getTreatmentProtocols(OFString &value, const signed l
 }
 
 
-OFCondition DRTIonPlanIOD::getTreatmentSites(OFString &value, const signed long pos) const
+OFCondition DRTIonPlanIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TreatmentSessionUID, value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getTreatmentSite(OFString &value, const signed long pos) const
 {
-    return getStringValueFromElement(TreatmentSites, value, pos);
+    return getStringValueFromElement(TreatmentSite, value, pos);
+}
+
+
+OFCondition DRTIonPlanIOD::getTypeOfPatientID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TypeOfPatientID, value, pos);
 }
 
 
@@ -2461,6 +2595,15 @@ OFCondition DRTIonPlanIOD::setAuthorizationEquipmentCertificationNumber(const OF
 }
 
 
+OFCondition DRTIonPlanIOD::setBarcodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = BarcodeValue.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2650,6 +2793,15 @@ OFCondition DRTIonPlanIOD::setDeviceSerialNumber(const OFString &value, const OF
 }
 
 
+OFCondition DRTIonPlanIOD::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = DeviceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setEthnicGroup(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2728,6 +2880,15 @@ OFCondition DRTIonPlanIOD::setInstanceNumber(const OFString &value, const OFBool
 }
 
 
+OFCondition DRTIonPlanIOD::setInstanceOriginStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = InstanceOriginStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -2806,6 +2967,15 @@ OFCondition DRTIonPlanIOD::setManufacturer(const OFString &value, const OFBool c
 }
 
 
+OFCondition DRTIonPlanIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ManufacturerDeviceClassUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setManufacturerModelName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3232,6 +3402,15 @@ OFCondition DRTIonPlanIOD::setRTPlanTime(const OFString &value, const OFBool che
 }
 
 
+OFCondition DRTIonPlanIOD::setReasonForVisit(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = ReasonForVisit.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setReferringPhysicianName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal;
@@ -3250,6 +3429,15 @@ OFCondition DRTIonPlanIOD::setRelatedGeneralSOPClassUID(const OFString &value, c
 }
 
 
+OFCondition DRTIonPlanIOD::setRequestingService(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = RequestingService.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setResponsibleOrganization(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3556,11 +3744,29 @@ OFCondition DRTIonPlanIOD::setTreatmentProtocols(const OFString &value, const OF
 }
 
 
-OFCondition DRTIonPlanIOD::setTreatmentSites(const OFString &value, const OFBool check)
+OFCondition DRTIonPlanIOD::setTreatmentSessionUID(const OFString &value, const OFBool check)
 {
-    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSessionUID.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonPlanIOD::setTreatmentSite(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSite.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTIonPlanIOD::setTypeOfPatientID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
     if (result.good())
-        result = TreatmentSites.putOFStringArray(value);
+        result = TypeOfPatientID.putOFStringArray(value);
     return result;
 }
 
index 3b313ddb10e89b42a617cb93bf214444d9970a85..7ff9c56e1364fbe6307b612ef1457e01c81a5970 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     PatientID(DCM_PatientID),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
+    TypeOfPatientID(DCM_TypeOfPatientID),
     PatientBirthDate(DCM_PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
@@ -78,12 +79,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     PhysiciansOfRecordIdentificationSequence(),
     NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(),
+    RequestingService(DCM_RequestingService),
     RequestingServiceCodeSequence(),
     ReferencedStudySequence(),
     ProcedureCodeSequence(),
     ReasonForPerformedProcedureCodeSequence(),
     ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(),
     LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(),
@@ -106,6 +109,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
     IssuerOfAdmissionIDSequence(),
+    ReasonForVisit(DCM_ReasonForVisit),
+    ReasonForVisitCodeSequence(),
     ServiceEpisodeID(DCM_ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(),
     ServiceEpisodeDescription(DCM_ServiceEpisodeDescription),
@@ -129,6 +134,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(),
     CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(DCM_TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription),
@@ -137,11 +143,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     InstitutionAddress(DCM_InstitutionAddress),
     StationName(DCM_StationName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
     UDISequence(),
+    DeviceUID(DCM_DeviceUID),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -200,6 +209,10 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
     PrivateDataElementCharacteristicsSequence(),
+    InstanceOriginStatus(DCM_InstanceOriginStatus),
+    BarcodeValue(DCM_BarcodeValue),
+    ReferencedDefinedProtocolSequence(),
+    ReferencedPerformedProtocolSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -213,6 +226,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     PatientID(copy.PatientID),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
+    TypeOfPatientID(copy.TypeOfPatientID),
     PatientBirthDate(copy.PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
@@ -269,12 +283,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence),
     NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence),
+    RequestingService(copy.RequestingService),
     RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence),
     ReferencedStudySequence(copy.ReferencedStudySequence),
     ProcedureCodeSequence(copy.ProcedureCodeSequence),
     ReasonForPerformedProcedureCodeSequence(copy.ReasonForPerformedProcedureCodeSequence),
     ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence),
     LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence),
@@ -297,6 +313,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
     IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence),
+    ReasonForVisit(copy.ReasonForVisit),
+    ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence),
     ServiceEpisodeID(copy.ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence),
     ServiceEpisodeDescription(copy.ServiceEpisodeDescription),
@@ -320,6 +338,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence),
     CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(copy.TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription),
@@ -328,11 +347,14 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     InstitutionAddress(copy.InstitutionAddress),
     StationName(copy.StationName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
     UDISequence(copy.UDISequence),
+    DeviceUID(copy.DeviceUID),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -391,6 +413,10 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
     PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
+    InstanceOriginStatus(copy.InstanceOriginStatus),
+    BarcodeValue(copy.BarcodeValue),
+    ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence),
+    ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -410,6 +436,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         PatientID = copy.PatientID;
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
+        TypeOfPatientID = copy.TypeOfPatientID;
         PatientBirthDate = copy.PatientBirthDate;
         PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
         PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
@@ -466,12 +493,14 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence;
         NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy;
         PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence;
+        RequestingService = copy.RequestingService;
         RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence;
         ReferencedStudySequence = copy.ReferencedStudySequence;
         ProcedureCodeSequence = copy.ProcedureCodeSequence;
         ReasonForPerformedProcedureCodeSequence = copy.ReasonForPerformedProcedureCodeSequence;
         ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID;
         ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription;
+        ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence;
         LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent;
         LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType;
         ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence;
@@ -494,6 +523,8 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
         IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence;
+        ReasonForVisit = copy.ReasonForVisit;
+        ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence;
         ServiceEpisodeID = copy.ServiceEpisodeID;
         IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence;
         ServiceEpisodeDescription = copy.ServiceEpisodeDescription;
@@ -517,6 +548,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription;
         PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence;
         CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep;
+        TreatmentSessionUID = copy.TreatmentSessionUID;
         ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName;
         ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID;
         ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription;
@@ -525,11 +557,14 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         InstitutionAddress = copy.InstitutionAddress;
         StationName = copy.StationName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
         UDISequence = copy.UDISequence;
+        DeviceUID = copy.DeviceUID;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -588,6 +623,10 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
         PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
+        InstanceOriginStatus = copy.InstanceOriginStatus;
+        BarcodeValue = copy.BarcodeValue;
+        ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence;
+        ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -602,6 +641,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     PatientID.clear();
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
+    TypeOfPatientID.clear();
     PatientBirthDate.clear();
     PatientBirthDateInAlternativeCalendar.clear();
     PatientDeathDateInAlternativeCalendar.clear();
@@ -658,12 +698,14 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     PhysiciansOfRecordIdentificationSequence.clear();
     NameOfPhysiciansReadingStudy.clear();
     PhysiciansReadingStudyIdentificationSequence.clear();
+    RequestingService.clear();
     RequestingServiceCodeSequence.clear();
     ReferencedStudySequence.clear();
     ProcedureCodeSequence.clear();
     ReasonForPerformedProcedureCodeSequence.clear();
     ClinicalTrialTimePointID.clear();
     ClinicalTrialTimePointDescription.clear();
+    ClinicalTrialTimePointTypeCodeSequence.clear();
     LongitudinalTemporalOffsetFromEvent.clear();
     LongitudinalTemporalEventType.clear();
     ConsentForClinicalTrialUseSequence.clear();
@@ -686,6 +728,8 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
     IssuerOfAdmissionIDSequence.clear();
+    ReasonForVisit.clear();
+    ReasonForVisitCodeSequence.clear();
     ServiceEpisodeID.clear();
     IssuerOfServiceEpisodeIDSequence.clear();
     ServiceEpisodeDescription.clear();
@@ -709,6 +753,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     PerformedProcedureStepDescription.clear();
     PerformedProtocolCodeSequence.clear();
     CommentsOnThePerformedProcedureStep.clear();
+    TreatmentSessionUID.clear();
     ClinicalTrialCoordinatingCenterName.clear();
     ClinicalTrialSeriesID.clear();
     ClinicalTrialSeriesDescription.clear();
@@ -717,11 +762,14 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     InstitutionAddress.clear();
     StationName.clear();
     InstitutionalDepartmentName.clear();
+    InstitutionalDepartmentTypeCodeSequence.clear();
     ManufacturerModelName.clear();
+    ManufacturerDeviceClassUID.clear();
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
     UDISequence.clear();
+    DeviceUID.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -780,6 +828,10 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
     PrivateDataElementCharacteristicsSequence.clear();
+    InstanceOriginStatus.clear();
+    BarcodeValue.clear();
+    ReferencedDefinedProtocolSequence.clear();
+    ReferencedPerformedProtocolSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -835,11 +887,14 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule");
+        InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
         UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -931,6 +986,10 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset)
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
         PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule");
+        ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
+        ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -949,6 +1008,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
@@ -1025,6 +1085,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset)
         PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule");
         PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule");
         RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1035,6 +1096,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule");
+            ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule");
             ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
@@ -1060,6 +1122,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
         IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule");
+        ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule");
         IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule");
@@ -1095,6 +1159,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule");
         PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName))
@@ -1122,6 +1187,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
@@ -1185,6 +1251,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule");
         if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule");
         if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1195,6 +1262,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule");
+            if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule");
             if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
@@ -1222,6 +1290,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule");
+            if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule");
@@ -1248,6 +1318,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/))
@@ -1263,11 +1334,14 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
         if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1360,6 +1434,10 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
         if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule");
+        if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
+        if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1400,6 +1478,7 @@ OFBool DRTIonBeamsTreatmentRecordIOD::isClinicalTrialStudyModulePresent(const OF
     /* check whether at least one attribute is present */
     return !ClinicalTrialTimePointID.isEmpty() ||
            !ClinicalTrialTimePointDescription.isEmpty() ||
+           !ClinicalTrialTimePointTypeCodeSequence.isEmpty() ||
            !LongitudinalTemporalOffsetFromEvent.isEmpty() ||
            !LongitudinalTemporalEventType.isEmpty() ||
            !ConsentForClinicalTrialUseSequence.isEmpty();
@@ -1428,6 +1507,8 @@ OFBool DRTIonBeamsTreatmentRecordIOD::isPatientStudyModulePresent(const OFBool /
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
            !IssuerOfAdmissionIDSequence.isEmpty() ||
+           !ReasonForVisit.isEmpty() ||
+           !ReasonForVisitCodeSequence.isEmpty() ||
            !ServiceEpisodeID.isEmpty() ||
            !IssuerOfServiceEpisodeIDSequence.isEmpty() ||
            !ServiceEpisodeDescription.isEmpty() ||
@@ -1540,6 +1621,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getAuthorizationEquipmentCertificatio
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getBarcodeValue(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(BarcodeValue, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos);
@@ -1672,6 +1759,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getDeviceSerialNumber(OFString &value
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getDeviceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getEthnicGroup(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EthnicGroup, value, pos);
@@ -1726,6 +1819,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getInstanceNumber(Sint32 &value, cons
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(InstanceOriginStatus, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstitutionAddress, value, pos);
@@ -1780,6 +1879,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getManufacturer(OFString &value, cons
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getManufacturerModelName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ManufacturerModelName, value, pos);
@@ -2068,6 +2173,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getQueryRetrieveView(OFString &value,
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getReasonForVisit(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ReasonForVisit, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getReferencedFractionGroupNumber(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ReferencedFractionGroupNumber, value, pos);
@@ -2092,6 +2203,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getRelatedGeneralSOPClassUID(OFString
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getRequestingService(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(RequestingService, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getResponsibleOrganization(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ResponsibleOrganization, value, pos);
@@ -2290,6 +2407,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentDate(OFString &value, con
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TreatmentSessionUID, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentStatusComment(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(TreatmentStatusComment, value, pos);
@@ -2302,6 +2425,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getTreatmentTime(OFString &value, con
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getTypeOfPatientID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TypeOfPatientID, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setAccessionNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2356,6 +2485,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setAuthorizationEquipmentCertificatio
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setBarcodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = BarcodeValue.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2554,6 +2692,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setDeviceSerialNumber(const OFString
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = DeviceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setEthnicGroup(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2626,6 +2773,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setInstanceNumber(const OFString &val
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setInstanceOriginStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = InstanceOriginStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -2704,6 +2860,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setManufacturer(const OFString &value
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ManufacturerDeviceClassUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setManufacturerModelName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3076,6 +3241,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setQueryRetrieveView(const OFString &
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setReasonForVisit(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = ReasonForVisit.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setReferencedFractionGroupNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
@@ -3103,6 +3277,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setRelatedGeneralSOPClassUID(const OF
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setRequestingService(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = RequestingService.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setResponsibleOrganization(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3382,6 +3565,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentDate(const OFString &valu
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentSessionUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSessionUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentStatusComment(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -3400,4 +3592,13 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setTreatmentTime(const OFString &valu
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setTypeOfPatientID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TypeOfPatientID.putOFStringArray(value);
+    return result;
+}
+
+
 // end of source file
index 191c864ba7272a1da8be21d558fcf2e6d7fac51a..5a094d830be06d97a3770986f3f84a01a0af8d4b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -322,10 +322,12 @@ OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoFirstItem()
 OFCondition DRTIssuerOfPatientIDQualifiersSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 56bf8a91aae1350c5ef1dd3ea61c30fc495ff620..6e3b30942699b02e154b173b1572562888401e0b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -768,10 +768,12 @@ OFCondition DRTIonRangeCompensatorSequence::gotoFirstItem()
 OFCondition DRTIonRangeCompensatorSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 29fc8815d6a6373ddcd66bf34d098a201c7bc94b..97cdbde73bd5dd6b67605bfc929082618306fa6e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -301,10 +301,12 @@ OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoFirstItem()
 OFCondition DRTIssuerOfServiceEpisodeIDSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 9f6f1f2d339cf813d2674ddbaf1e9402c3f301c0..40b0e5da8b23440de990071a200c0f51bbede607 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -743,10 +743,12 @@ OFCondition DRTIonToleranceTableSequence::gotoFirstItem()
 OFCondition DRTIonToleranceTableSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index c043d21c7b8ed0ce6718dbffa087a375e25e6ae6..3d0ca16d0ac9827781709168241f1a2cc2fcd25f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -306,10 +306,12 @@ OFCondition DRTIonWedgePositionSequence::gotoFirstItem()
 OFCondition DRTIonWedgePositionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 488532d5945de7136979c1e6dc470e08082e1bb6..b91e5feced8627317fdc9c2b3e928cbdc0ce1727 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -440,10 +440,12 @@ OFCondition DRTIonWedgeSequence::gotoFirstItem()
 OFCondition DRTIonWedgeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index ccbe1f560dc039c00db444ce962dc4d0e5aebce8..102af304823ec13dcbe8c8349d1d66bc331b624e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -368,10 +368,12 @@ OFCondition DRTLateralSpreadingDeviceSequence::gotoFirstItem()
 OFCondition DRTLateralSpreadingDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtlsds1.cc b/dcmrt/libsrc/drtlsds1.cc
new file mode 100644 (file)
index 0000000..f4cd459
--- /dev/null
@@ -0,0 +1,634 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtlsds1.h"
+
+
+// --- item class ---
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    IsocenterToLateralSpreadingDeviceDistance(DCM_IsocenterToLateralSpreadingDeviceDistance),
+    LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting),
+    LateralSpreadingDeviceWaterEquivalentThickness(DCM_LateralSpreadingDeviceWaterEquivalentThickness),
+    ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber)
+{
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    IsocenterToLateralSpreadingDeviceDistance(copy.IsocenterToLateralSpreadingDeviceDistance),
+    LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting),
+    LateralSpreadingDeviceWaterEquivalentThickness(copy.LateralSpreadingDeviceWaterEquivalentThickness),
+    ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber)
+{
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        IsocenterToLateralSpreadingDeviceDistance = copy.IsocenterToLateralSpreadingDeviceDistance;
+        LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting;
+        LateralSpreadingDeviceWaterEquivalentThickness = copy.LateralSpreadingDeviceWaterEquivalentThickness;
+        ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber;
+    }
+    return *this;
+}
+
+
+void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedLateralSpreadingDeviceNumber.clear();
+        LateralSpreadingDeviceSetting.clear();
+        IsocenterToLateralSpreadingDeviceDistance.clear();
+        LateralSpreadingDeviceWaterEquivalentThickness.clear();
+    }
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return ReferencedLateralSpreadingDeviceNumber.isEmpty() &&
+           LateralSpreadingDeviceSetting.isEmpty() &&
+           IsocenterToLateralSpreadingDeviceDistance.isEmpty() &&
+           LateralSpreadingDeviceWaterEquivalentThickness.isEmpty();
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence");
+        getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence");
+        getAndCheckElementFromDataset(item, IsocenterToLateralSpreadingDeviceDistance, "1", "3", "LateralSpreadingDeviceSettingsSequence");
+        getAndCheckElementFromDataset(item, LateralSpreadingDeviceWaterEquivalentThickness, "1", "3", "LateralSpreadingDeviceSettingsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence");
+        addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToLateralSpreadingDeviceDistance), "1", "3", "LateralSpreadingDeviceSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(LateralSpreadingDeviceWaterEquivalentThickness), "1", "3", "LateralSpreadingDeviceSettingsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, IsocenterToLateralSpreadingDeviceDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, LateralSpreadingDeviceWaterEquivalentThickness).getFloat32(value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return IsocenterToLateralSpreadingDeviceDistance.putFloat32(value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LateralSpreadingDeviceSetting.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return LateralSpreadingDeviceWaterEquivalentThickness.putFloat32(value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                                              const OFString &card,
+                                                                              const OFString &type,
+                                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                                               const OFString &card,
+                                                                               const OFString &type,
+                                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtlsds2.cc b/dcmrt/libsrc/drtlsds2.cc
new file mode 100644 (file)
index 0000000..6ce97c8
--- /dev/null
@@ -0,0 +1,584 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtlsds2.h"
+
+
+// --- item class ---
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting),
+    ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber)
+{
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting),
+    ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber)
+{
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
+{
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting;
+        ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber;
+    }
+    return *this;
+}
+
+
+void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedLateralSpreadingDeviceNumber.clear();
+        LateralSpreadingDeviceSetting.clear();
+    }
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
+{
+    return ReferencedLateralSpreadingDeviceNumber.isEmpty() &&
+           LateralSpreadingDeviceSetting.isEmpty();
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence");
+        getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence");
+        addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LateralSpreadingDeviceSetting.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule()
+{
+    clear();
+}
+
+
+void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
+                                                                                           const OFString &card,
+                                                                                           const OFString &type,
+                                                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
+                                                                                            const OFString &card,
+                                                                                            const OFString &type,
+                                                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtlsds6.cc b/dcmrt/libsrc/drtlsds6.cc
deleted file mode 100644 (file)
index 1003c81..0000000
+++ /dev/null
@@ -1,632 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtlsds6.h"
-
-
-// --- item class ---
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    IsocenterToLateralSpreadingDeviceDistance(DCM_IsocenterToLateralSpreadingDeviceDistance),
-    LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting),
-    LateralSpreadingDeviceWaterEquivalentThickness(DCM_LateralSpreadingDeviceWaterEquivalentThickness),
-    ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber)
-{
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    IsocenterToLateralSpreadingDeviceDistance(copy.IsocenterToLateralSpreadingDeviceDistance),
-    LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting),
-    LateralSpreadingDeviceWaterEquivalentThickness(copy.LateralSpreadingDeviceWaterEquivalentThickness),
-    ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber)
-{
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        IsocenterToLateralSpreadingDeviceDistance = copy.IsocenterToLateralSpreadingDeviceDistance;
-        LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting;
-        LateralSpreadingDeviceWaterEquivalentThickness = copy.LateralSpreadingDeviceWaterEquivalentThickness;
-        ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber;
-    }
-    return *this;
-}
-
-
-void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedLateralSpreadingDeviceNumber.clear();
-        LateralSpreadingDeviceSetting.clear();
-        IsocenterToLateralSpreadingDeviceDistance.clear();
-        LateralSpreadingDeviceWaterEquivalentThickness.clear();
-    }
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return ReferencedLateralSpreadingDeviceNumber.isEmpty() &&
-           LateralSpreadingDeviceSetting.isEmpty() &&
-           IsocenterToLateralSpreadingDeviceDistance.isEmpty() &&
-           LateralSpreadingDeviceWaterEquivalentThickness.isEmpty();
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence");
-        getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence");
-        getAndCheckElementFromDataset(item, IsocenterToLateralSpreadingDeviceDistance, "1", "3", "LateralSpreadingDeviceSettingsSequence");
-        getAndCheckElementFromDataset(item, LateralSpreadingDeviceWaterEquivalentThickness, "1", "3", "LateralSpreadingDeviceSettingsSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence");
-        addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToLateralSpreadingDeviceDistance), "1", "3", "LateralSpreadingDeviceSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(LateralSpreadingDeviceWaterEquivalentThickness), "1", "3", "LateralSpreadingDeviceSettingsSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToLateralSpreadingDeviceDistance(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, IsocenterToLateralSpreadingDeviceDistance).getFloat32(value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getLateralSpreadingDeviceWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, LateralSpreadingDeviceWaterEquivalentThickness).getFloat32(value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToLateralSpreadingDeviceDistance(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return IsocenterToLateralSpreadingDeviceDistance.putFloat32(value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = LateralSpreadingDeviceSetting.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setLateralSpreadingDeviceWaterEquivalentThickness(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return LateralSpreadingDeviceWaterEquivalentThickness.putFloat32(value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                                              const OFString &card,
-                                                                              const OFString &type,
-                                                                              const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                                               const OFString &card,
-                                                                               const OFString &type,
-                                                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtlsds7.cc b/dcmrt/libsrc/drtlsds7.cc
deleted file mode 100644 (file)
index a008d3c..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtlsds7.h"
-
-
-// --- item class ---
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    LateralSpreadingDeviceSetting(DCM_LateralSpreadingDeviceSetting),
-    ReferencedLateralSpreadingDeviceNumber(DCM_ReferencedLateralSpreadingDeviceNumber)
-{
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    LateralSpreadingDeviceSetting(copy.LateralSpreadingDeviceSetting),
-    ReferencedLateralSpreadingDeviceNumber(copy.ReferencedLateralSpreadingDeviceNumber)
-{
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
-{
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        LateralSpreadingDeviceSetting = copy.LateralSpreadingDeviceSetting;
-        ReferencedLateralSpreadingDeviceNumber = copy.ReferencedLateralSpreadingDeviceNumber;
-    }
-    return *this;
-}
-
-
-void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedLateralSpreadingDeviceNumber.clear();
-        LateralSpreadingDeviceSetting.clear();
-    }
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
-{
-    return ReferencedLateralSpreadingDeviceNumber.isEmpty() &&
-           LateralSpreadingDeviceSetting.isEmpty();
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedLateralSpreadingDeviceNumber, "1", "1", "LateralSpreadingDeviceSettingsSequence");
-        getAndCheckElementFromDataset(item, LateralSpreadingDeviceSetting, "1", "1", "LateralSpreadingDeviceSettingsSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedLateralSpreadingDeviceNumber), "1", "1", "LateralSpreadingDeviceSettingsSequence");
-        addElementToDataset(result, item, new DcmLongString(LateralSpreadingDeviceSetting), "1", "1", "LateralSpreadingDeviceSettingsSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getLateralSpreadingDeviceSetting(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(LateralSpreadingDeviceSetting, value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedLateralSpreadingDeviceNumber, value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedLateralSpreadingDeviceNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedLateralSpreadingDeviceNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setLateralSpreadingDeviceSetting(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = LateralSpreadingDeviceSetting.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedLateralSpreadingDeviceNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedLateralSpreadingDeviceNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule()
-{
-    clear();
-}
-
-
-void DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
-                                                                                           const OFString &card,
-                                                                                           const OFString &type,
-                                                                                           const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_LateralSpreadingDeviceSettingsSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_LateralSpreadingDeviceSettingsSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
-                                                                                            const OFString &card,
-                                                                                            const OFString &type,
-                                                                                            const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_LateralSpreadingDeviceSettingsSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 7e2481cacc20573cc40518a1747010b06ff2042d..157590873cefba1793ae852636c17eac32f5a263 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -288,10 +288,12 @@ OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoFirstItem()
 OFCondition DRTMultiplexedAudioChannelsDescriptionCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 001eba23422094667600d6659fba9e8534068cb7..46229fb6c5d1f8abec3bcc05963363c5de5e2d5e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -219,10 +219,12 @@ OFCondition DRTModifiedAttributesSequence::gotoFirstItem()
 OFCondition DRTModifiedAttributesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 931c00223a279c459ad5269649110022762eede2..77cff1494ddc039baac7d7196ba2b89bc38fb665 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -415,10 +415,12 @@ OFCondition DRTMeasuredDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTMeasuredDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 81856075158fad96a34d8d7b06b889bd72eaec02..bbdf4963cf3f690cd29c0af8495fe8b70b5a88ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -332,10 +332,12 @@ OFCondition DRTModalityLUTSequence::gotoFirstItem()
 OFCondition DRTModalityLUTSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index b9d4dc3968d93e6da002faec606538b3fd4bf2d1..b11e509788dddb50199d1f4230710e3f34cb809f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -326,10 +326,12 @@ OFCondition DRTMACParametersSequence::gotoFirstItem()
 OFCondition DRTMACParametersSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 731eb7a45c2cc0ac7e1eb78cdde494a8a1268726..a7277386afbe2785663dacd88e6d8145fa13474e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMappingResourceIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -301,10 +301,12 @@ OFCondition DRTMappingResourceIdentificationSequence::gotoFirstItem()
 OFCondition DRTMappingResourceIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 10b18c7e33fb0f1f6c4459c69c8f46407c294cf9..48fa00881e2a0a8c0b18b41a1a9013d191eb744c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -330,10 +330,12 @@ OFCondition DRTMotionSynchronizationSequence::gotoFirstItem()
 OFCondition DRTMotionSynchronizationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtmttcs.cc b/dcmrt/libsrc/drtmttcs.cc
new file mode 100644 (file)
index 0000000..c44fbce
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTMachineSpecificTreatmentTerminationCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtmttcs.h"
+
+
+// --- item class ---
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::Item::~Item()
+{
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTMachineSpecificTreatmentTerminationCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "MachineSpecificTreatmentTerminationCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::DRTMachineSpecificTreatmentTerminationCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::DRTMachineSpecificTreatmentTerminationCodeSequence(const DRTMachineSpecificTreatmentTerminationCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence &DRTMachineSpecificTreatmentTerminationCodeSequence::operator=(const DRTMachineSpecificTreatmentTerminationCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::~DRTMachineSpecificTreatmentTerminationCodeSequence()
+{
+    clear();
+}
+
+
+void DRTMachineSpecificTreatmentTerminationCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTMachineSpecificTreatmentTerminationCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTMachineSpecificTreatmentTerminationCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTMachineSpecificTreatmentTerminationCodeSequence::Item &DRTMachineSpecificTreatmentTerminationCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::read(DcmItem &dataset,
+                                                                     const OFString &card,
+                                                                     const OFString &type,
+                                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_MachineSpecificTreatmentTerminationCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_MachineSpecificTreatmentTerminationCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTMachineSpecificTreatmentTerminationCodeSequence::write(DcmItem &dataset,
+                                                                      const OFString &card,
+                                                                      const OFString &type,
+                                                                      const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_MachineSpecificTreatmentTerminationCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index d3e1f6bac8b336230120021be888b491a1785d5a..770dae41cfb2484a783144503b620be29e6541a3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTMeasurementUnitsCodeSequence::gotoFirstItem()
 OFCondition DRTMeasurementUnitsCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtnmas.cc b/dcmrt/libsrc/drtnmas.cc
new file mode 100644 (file)
index 0000000..5bbc776
--- /dev/null
@@ -0,0 +1,731 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTNonconformingModifiedAttributesSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtnmas.h"
+
+
+// --- item class ---
+
+DRTNonconformingModifiedAttributesSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    NonconformingDataElementValue(DCM_NonconformingDataElementValue),
+    SelectorAttribute(DCM_SelectorAttribute),
+    SelectorAttributePrivateCreator(DCM_SelectorAttributePrivateCreator),
+    SelectorSequencePointer(DCM_SelectorSequencePointer),
+    SelectorSequencePointerItems(DCM_SelectorSequencePointerItems),
+    SelectorSequencePointerPrivateCreator(DCM_SelectorSequencePointerPrivateCreator),
+    SelectorValueNumber(DCM_SelectorValueNumber)
+{
+}
+
+
+DRTNonconformingModifiedAttributesSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    NonconformingDataElementValue(copy.NonconformingDataElementValue),
+    SelectorAttribute(copy.SelectorAttribute),
+    SelectorAttributePrivateCreator(copy.SelectorAttributePrivateCreator),
+    SelectorSequencePointer(copy.SelectorSequencePointer),
+    SelectorSequencePointerItems(copy.SelectorSequencePointerItems),
+    SelectorSequencePointerPrivateCreator(copy.SelectorSequencePointerPrivateCreator),
+    SelectorValueNumber(copy.SelectorValueNumber)
+{
+}
+
+
+DRTNonconformingModifiedAttributesSequence::Item::~Item()
+{
+}
+
+
+DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        NonconformingDataElementValue = copy.NonconformingDataElementValue;
+        SelectorAttribute = copy.SelectorAttribute;
+        SelectorAttributePrivateCreator = copy.SelectorAttributePrivateCreator;
+        SelectorSequencePointer = copy.SelectorSequencePointer;
+        SelectorSequencePointerItems = copy.SelectorSequencePointerItems;
+        SelectorSequencePointerPrivateCreator = copy.SelectorSequencePointerPrivateCreator;
+        SelectorValueNumber = copy.SelectorValueNumber;
+    }
+    return *this;
+}
+
+
+void DRTNonconformingModifiedAttributesSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        SelectorAttribute.clear();
+        SelectorValueNumber.clear();
+        SelectorSequencePointer.clear();
+        SelectorSequencePointerPrivateCreator.clear();
+        SelectorSequencePointerItems.clear();
+        SelectorAttributePrivateCreator.clear();
+        NonconformingDataElementValue.clear();
+    }
+}
+
+
+OFBool DRTNonconformingModifiedAttributesSequence::Item::isEmpty()
+{
+    return SelectorAttribute.isEmpty() &&
+           SelectorValueNumber.isEmpty() &&
+           SelectorSequencePointer.isEmpty() &&
+           SelectorSequencePointerPrivateCreator.isEmpty() &&
+           SelectorSequencePointerItems.isEmpty() &&
+           SelectorAttributePrivateCreator.isEmpty() &&
+           NonconformingDataElementValue.isEmpty();
+}
+
+
+OFBool DRTNonconformingModifiedAttributesSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, SelectorAttribute, "1", "1C", "NonconformingModifiedAttributesSequence");
+        getAndCheckElementFromDataset(item, SelectorValueNumber, "1", "1C", "NonconformingModifiedAttributesSequence");
+        getAndCheckElementFromDataset(item, SelectorSequencePointer, "1-n", "1C", "NonconformingModifiedAttributesSequence");
+        getAndCheckElementFromDataset(item, SelectorSequencePointerPrivateCreator, "1-n", "1C", "NonconformingModifiedAttributesSequence");
+        getAndCheckElementFromDataset(item, SelectorSequencePointerItems, "1-n", "1C", "NonconformingModifiedAttributesSequence");
+        getAndCheckElementFromDataset(item, SelectorAttributePrivateCreator, "1", "1C", "NonconformingModifiedAttributesSequence");
+        getAndCheckElementFromDataset(item, NonconformingDataElementValue, "1", "1", "NonconformingModifiedAttributesSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmAttributeTag(SelectorAttribute), "1", "1C", "NonconformingModifiedAttributesSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(SelectorValueNumber), "1", "1C", "NonconformingModifiedAttributesSequence");
+        addElementToDataset(result, item, new DcmAttributeTag(SelectorSequencePointer), "1-n", "1C", "NonconformingModifiedAttributesSequence");
+        addElementToDataset(result, item, new DcmLongString(SelectorSequencePointerPrivateCreator), "1-n", "1C", "NonconformingModifiedAttributesSequence");
+        addElementToDataset(result, item, new DcmIntegerString(SelectorSequencePointerItems), "1-n", "1C", "NonconformingModifiedAttributesSequence");
+        addElementToDataset(result, item, new DcmLongString(SelectorAttributePrivateCreator), "1", "1C", "NonconformingModifiedAttributesSequence");
+        addElementToDataset(result, item, new DcmOtherByteOtherWord(NonconformingDataElementValue), "1", "1", "NonconformingModifiedAttributesSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getNonconformingDataElementValue(Uint8 *&value, unsigned long *count) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = OFconst_cast(DcmOtherByteOtherWord &, NonconformingDataElementValue).getUint8Array(value);
+        /* set optional count parameter */
+        if (count != NULL)
+        {
+            if (result.good())
+                *count = OFconst_cast(DcmOtherByteOtherWord &, NonconformingDataElementValue).getLength() / sizeof(Uint8);
+            else
+                *count = 0;
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorAttribute(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SelectorAttribute, value, pos);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorAttributePrivateCreator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SelectorAttributePrivateCreator, value, pos);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointer(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SelectorSequencePointer, value, pos);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointerItems(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SelectorSequencePointerItems, value, pos);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointerItems(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, SelectorSequencePointerItems).getSint32(value, pos);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorSequencePointerPrivateCreator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SelectorSequencePointerPrivateCreator, value, pos);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::getSelectorValueNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, SelectorValueNumber).getUint16(value, pos);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::setNonconformingDataElementValue(const Uint8 *value, const unsigned long count)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return NonconformingDataElementValue.putUint8Array(value, count);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorAttribute(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmAttributeTag::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = SelectorAttribute.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorAttributePrivateCreator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = SelectorAttributePrivateCreator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorSequencePointer(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmAttributeTag::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = SelectorSequencePointer.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorSequencePointerItems(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = SelectorSequencePointerItems.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorSequencePointerPrivateCreator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = SelectorSequencePointerPrivateCreator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::Item::setSelectorValueNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SelectorValueNumber.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTNonconformingModifiedAttributesSequence::DRTNonconformingModifiedAttributesSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTNonconformingModifiedAttributesSequence::DRTNonconformingModifiedAttributesSequence(const DRTNonconformingModifiedAttributesSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTNonconformingModifiedAttributesSequence &DRTNonconformingModifiedAttributesSequence::operator=(const DRTNonconformingModifiedAttributesSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTNonconformingModifiedAttributesSequence::~DRTNonconformingModifiedAttributesSequence()
+{
+    clear();
+}
+
+
+void DRTNonconformingModifiedAttributesSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTNonconformingModifiedAttributesSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTNonconformingModifiedAttributesSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTNonconformingModifiedAttributesSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTNonconformingModifiedAttributesSequence::Item &DRTNonconformingModifiedAttributesSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::read(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_NonconformingModifiedAttributesSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_NonconformingModifiedAttributesSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTNonconformingModifiedAttributesSequence::write(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_NonconformingModifiedAttributesSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 5260165e8204866723759b75f1ff7dd39c4e1e21..70c4adb88fb3368d4c74ce10b2fc00e15faf1705 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,7 @@ DRTOriginalAttributesSequence::Item::Item(const OFBool emptyDefaultItem)
     AttributeModificationDateTime(DCM_AttributeModificationDateTime),
     ModifiedAttributesSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ModifyingSystem(DCM_ModifyingSystem),
+    NonconformingModifiedAttributesSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReasonForTheAttributeModification(DCM_ReasonForTheAttributeModification),
     SourceOfPreviousValues(DCM_SourceOfPreviousValues)
 {
@@ -35,6 +36,7 @@ DRTOriginalAttributesSequence::Item::Item(const Item &copy)
     AttributeModificationDateTime(copy.AttributeModificationDateTime),
     ModifiedAttributesSequence(copy.ModifiedAttributesSequence),
     ModifyingSystem(copy.ModifyingSystem),
+    NonconformingModifiedAttributesSequence(copy.NonconformingModifiedAttributesSequence),
     ReasonForTheAttributeModification(copy.ReasonForTheAttributeModification),
     SourceOfPreviousValues(copy.SourceOfPreviousValues)
 {
@@ -54,6 +56,7 @@ DRTOriginalAttributesSequence::Item &DRTOriginalAttributesSequence::Item::operat
         AttributeModificationDateTime = copy.AttributeModificationDateTime;
         ModifiedAttributesSequence = copy.ModifiedAttributesSequence;
         ModifyingSystem = copy.ModifyingSystem;
+        NonconformingModifiedAttributesSequence = copy.NonconformingModifiedAttributesSequence;
         ReasonForTheAttributeModification = copy.ReasonForTheAttributeModification;
         SourceOfPreviousValues = copy.SourceOfPreviousValues;
     }
@@ -71,6 +74,7 @@ void DRTOriginalAttributesSequence::Item::clear()
         ModifyingSystem.clear();
         ReasonForTheAttributeModification.clear();
         ModifiedAttributesSequence.clear();
+        NonconformingModifiedAttributesSequence.clear();
     }
 }
 
@@ -81,7 +85,8 @@ OFBool DRTOriginalAttributesSequence::Item::isEmpty()
            AttributeModificationDateTime.isEmpty() &&
            ModifyingSystem.isEmpty() &&
            ReasonForTheAttributeModification.isEmpty() &&
-           ModifiedAttributesSequence.isEmpty();
+           ModifiedAttributesSequence.isEmpty() &&
+           NonconformingModifiedAttributesSequence.isEmpty();
 }
 
 
@@ -103,6 +108,7 @@ OFCondition DRTOriginalAttributesSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ModifyingSystem, "1", "1", "OriginalAttributesSequence");
         getAndCheckElementFromDataset(item, ReasonForTheAttributeModification, "1", "1", "OriginalAttributesSequence");
         ModifiedAttributesSequence.read(item, "1-n", "1", "OriginalAttributesSequence");
+        NonconformingModifiedAttributesSequence.read(item, "1-n", "3", "OriginalAttributesSequence");
         result = EC_Normal;
     }
     return result;
@@ -120,6 +126,7 @@ OFCondition DRTOriginalAttributesSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(ModifyingSystem), "1", "1", "OriginalAttributesSequence");
         addElementToDataset(result, item, new DcmCodeString(ReasonForTheAttributeModification), "1", "1", "OriginalAttributesSequence");
         if (result.good()) result = ModifiedAttributesSequence.write(item, "1-n", "1", "OriginalAttributesSequence");
+        if (result.good()) result = NonconformingModifiedAttributesSequence.write(item, "1-n", "3", "OriginalAttributesSequence");
     }
     return result;
 }
@@ -337,10 +344,12 @@ OFCondition DRTOriginalAttributesSequence::gotoFirstItem()
 OFCondition DRTOriginalAttributesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5b54339767519698d58834753fea613c513766bd..ffd54e70e27431f8a806a0a33b73033596fd6114 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,8 @@ DRTOperatorIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InstitutionName(DCM_InstitutionName),
+    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonTelecomInformation(DCM_PersonTelecomInformation),
@@ -37,6 +39,8 @@ DRTOperatorIdentificationSequence::Item::Item(const Item &copy)
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionCodeSequence(copy.InstitutionCodeSequence),
     InstitutionName(copy.InstitutionName),
+    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
     PersonTelecomInformation(copy.PersonTelecomInformation),
@@ -58,6 +62,8 @@ DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::Item
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionCodeSequence = copy.InstitutionCodeSequence;
         InstitutionName = copy.InstitutionName;
+        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
         PersonTelecomInformation = copy.PersonTelecomInformation;
@@ -79,6 +85,8 @@ void DRTOperatorIdentificationSequence::Item::clear()
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
+        InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
     }
 }
 
@@ -91,7 +99,9 @@ OFBool DRTOperatorIdentificationSequence::Item::isEmpty()
            PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
-           InstitutionCodeSequence.isEmpty();
+           InstitutionCodeSequence.isEmpty() &&
+           InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty();
 }
 
 
@@ -115,6 +125,8 @@ OFCondition DRTOperatorIdentificationSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "OperatorIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "OperatorIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "OperatorIdentificationSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "OperatorIdentificationSequence");
         result = EC_Normal;
     }
     return result;
@@ -134,6 +146,8 @@ OFCondition DRTOperatorIdentificationSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "OperatorIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "OperatorIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "OperatorIdentificationSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "OperatorIdentificationSequence");
     }
     return result;
 }
@@ -157,6 +171,15 @@ OFCondition DRTOperatorIdentificationSequence::Item::getInstitutionName(OFString
 }
 
 
+OFCondition DRTOperatorIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
+}
+
+
 OFCondition DRTOperatorIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -210,6 +233,19 @@ OFCondition DRTOperatorIdentificationSequence::Item::setInstitutionName(const OF
 }
 
 
+OFCondition DRTOperatorIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionalDepartmentName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTOperatorIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -373,10 +409,12 @@ OFCondition DRTOperatorIdentificationSequence::gotoFirstItem()
 OFCondition DRTOperatorIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 7dcb7ed4a48b291bf3ad72e406093f64722a7dd3..9c99398ea5089d846f9f2a9bc5dca4127847a452 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -308,10 +308,12 @@ OFCondition DRTOtherPatientIDsSequence::gotoFirstItem()
 OFCondition DRTOtherPatientIDsSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index b0fadf2bae038cf5a8d339dcc3e939caa1a17649..4db799b66a687a2352f5f3f3c8492a99f8fb68f6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -400,10 +400,12 @@ OFCondition DRTOverrideSequence::gotoFirstItem()
 OFCondition DRTOverrideSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtosirs.cc b/dcmrt/libsrc/drtosirs.cc
new file mode 100644 (file)
index 0000000..9f80490
--- /dev/null
@@ -0,0 +1,575 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTOriginatingSOPInstanceReferenceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtosirs.h"
+
+
+// --- item class ---
+
+DRTOriginatingSOPInstanceReferenceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::Item::~Item()
+{
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTOriginatingSOPInstanceReferenceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+    }
+}
+
+
+OFBool DRTOriginatingSOPInstanceReferenceSequence::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty();
+}
+
+
+OFBool DRTOriginatingSOPInstanceReferenceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "OriginatingSOPInstanceReferenceSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "OriginatingSOPInstanceReferenceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "OriginatingSOPInstanceReferenceSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "OriginatingSOPInstanceReferenceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTOriginatingSOPInstanceReferenceSequence::DRTOriginatingSOPInstanceReferenceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::DRTOriginatingSOPInstanceReferenceSequence(const DRTOriginatingSOPInstanceReferenceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence &DRTOriginatingSOPInstanceReferenceSequence::operator=(const DRTOriginatingSOPInstanceReferenceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::~DRTOriginatingSOPInstanceReferenceSequence()
+{
+    clear();
+}
+
+
+void DRTOriginatingSOPInstanceReferenceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTOriginatingSOPInstanceReferenceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTOriginatingSOPInstanceReferenceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTOriginatingSOPInstanceReferenceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTOriginatingSOPInstanceReferenceSequence::Item &DRTOriginatingSOPInstanceReferenceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::read(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_OriginatingSOPInstanceReferenceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_OriginatingSOPInstanceReferenceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTOriginatingSOPInstanceReferenceSequence::write(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_OriginatingSOPInstanceReferenceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtpasms.cc b/dcmrt/libsrc/drtpasms.cc
new file mode 100644 (file)
index 0000000..d91f19d
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTPrimaryAnatomicStructureModifierSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtpasms.h"
+
+
+// --- item class ---
+
+DRTPrimaryAnatomicStructureModifierSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::Item::~Item()
+{
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTPrimaryAnatomicStructureModifierSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTPrimaryAnatomicStructureModifierSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTPrimaryAnatomicStructureModifierSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "PrimaryAnatomicStructureModifierSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTPrimaryAnatomicStructureModifierSequence::DRTPrimaryAnatomicStructureModifierSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::DRTPrimaryAnatomicStructureModifierSequence(const DRTPrimaryAnatomicStructureModifierSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence &DRTPrimaryAnatomicStructureModifierSequence::operator=(const DRTPrimaryAnatomicStructureModifierSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::~DRTPrimaryAnatomicStructureModifierSequence()
+{
+    clear();
+}
+
+
+void DRTPrimaryAnatomicStructureModifierSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTPrimaryAnatomicStructureModifierSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTPrimaryAnatomicStructureModifierSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTPrimaryAnatomicStructureModifierSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTPrimaryAnatomicStructureModifierSequence::Item &DRTPrimaryAnatomicStructureModifierSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::read(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_PrimaryAnatomicStructureModifierSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_PrimaryAnatomicStructureModifierSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureModifierSequence::write(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrimaryAnatomicStructureModifierSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtpass.cc b/dcmrt/libsrc/drtpass.cc
new file mode 100644 (file)
index 0000000..b829c3d
--- /dev/null
@@ -0,0 +1,966 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTPrimaryAnatomicStructureSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtpass.h"
+
+
+// --- item class ---
+
+DRTPrimaryAnatomicStructureSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    PrimaryAnatomicStructureModifierSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTPrimaryAnatomicStructureSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    PrimaryAnatomicStructureModifierSequence(copy.PrimaryAnatomicStructureModifierSequence),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTPrimaryAnatomicStructureSequence::Item::~Item()
+{
+}
+
+
+DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        PrimaryAnatomicStructureModifierSequence = copy.PrimaryAnatomicStructureModifierSequence;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTPrimaryAnatomicStructureSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+        PrimaryAnatomicStructureModifierSequence.clear();
+    }
+}
+
+
+OFBool DRTPrimaryAnatomicStructureSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty() &&
+           PrimaryAnatomicStructureModifierSequence.isEmpty();
+}
+
+
+OFBool DRTPrimaryAnatomicStructureSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PrimaryAnatomicStructureSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PrimaryAnatomicStructureSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "PrimaryAnatomicStructureSequence");
+        PrimaryAnatomicStructureModifierSequence.read(item, "1-n", "3", "PrimaryAnatomicStructureSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PrimaryAnatomicStructureSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PrimaryAnatomicStructureSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "PrimaryAnatomicStructureSequence");
+        if (result.good()) result = PrimaryAnatomicStructureModifierSequence.write(item, "1-n", "3", "PrimaryAnatomicStructureSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTPrimaryAnatomicStructureSequence::DRTPrimaryAnatomicStructureSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTPrimaryAnatomicStructureSequence::DRTPrimaryAnatomicStructureSequence(const DRTPrimaryAnatomicStructureSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTPrimaryAnatomicStructureSequence &DRTPrimaryAnatomicStructureSequence::operator=(const DRTPrimaryAnatomicStructureSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTPrimaryAnatomicStructureSequence::~DRTPrimaryAnatomicStructureSequence()
+{
+    clear();
+}
+
+
+void DRTPrimaryAnatomicStructureSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTPrimaryAnatomicStructureSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTPrimaryAnatomicStructureSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTPrimaryAnatomicStructureSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTPrimaryAnatomicStructureSequence::Item &DRTPrimaryAnatomicStructureSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::read(DcmItem &dataset,
+                                                      const OFString &card,
+                                                      const OFString &type,
+                                                      const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_PrimaryAnatomicStructureSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_PrimaryAnatomicStructureSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTPrimaryAnatomicStructureSequence::write(DcmItem &dataset,
+                                                       const OFString &card,
+                                                       const OFString &type,
+                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrimaryAnatomicStructureSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 5076218c2d800458fe711d3539b5adcef8fb1b19..792c3a86ad151ebaaafa131bc0d3d06bcea3018d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTPatientBreedCodeSequence::gotoFirstItem()
 OFCondition DRTPatientBreedCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtpbdds.cc b/dcmrt/libsrc/drtpbdds.cc
new file mode 100644 (file)
index 0000000..ade882b
--- /dev/null
@@ -0,0 +1,657 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTParallelRTBeamDelimiterDeviceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtpbdds.h"
+
+
+// --- item class ---
+
+DRTParallelRTBeamDelimiterDeviceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    NumberOfParallelRTBeamDelimiters(DCM_NumberOfParallelRTBeamDelimiters),
+    ParallelRTBeamDelimiterBoundaries(DCM_ParallelRTBeamDelimiterBoundaries),
+    ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ParallelRTBeamDelimiterLeafMountingSide(DCM_ParallelRTBeamDelimiterLeafMountingSide),
+    ParallelRTBeamDelimiterOpeningExtents(DCM_ParallelRTBeamDelimiterOpeningExtents),
+    ParallelRTBeamDelimiterOpeningMode(DCM_ParallelRTBeamDelimiterOpeningMode)
+{
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    NumberOfParallelRTBeamDelimiters(copy.NumberOfParallelRTBeamDelimiters),
+    ParallelRTBeamDelimiterBoundaries(copy.ParallelRTBeamDelimiterBoundaries),
+    ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(copy.ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence),
+    ParallelRTBeamDelimiterLeafMountingSide(copy.ParallelRTBeamDelimiterLeafMountingSide),
+    ParallelRTBeamDelimiterOpeningExtents(copy.ParallelRTBeamDelimiterOpeningExtents),
+    ParallelRTBeamDelimiterOpeningMode(copy.ParallelRTBeamDelimiterOpeningMode)
+{
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::Item::~Item()
+{
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        NumberOfParallelRTBeamDelimiters = copy.NumberOfParallelRTBeamDelimiters;
+        ParallelRTBeamDelimiterBoundaries = copy.ParallelRTBeamDelimiterBoundaries;
+        ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence = copy.ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence;
+        ParallelRTBeamDelimiterLeafMountingSide = copy.ParallelRTBeamDelimiterLeafMountingSide;
+        ParallelRTBeamDelimiterOpeningExtents = copy.ParallelRTBeamDelimiterOpeningExtents;
+        ParallelRTBeamDelimiterOpeningMode = copy.ParallelRTBeamDelimiterOpeningMode;
+    }
+    return *this;
+}
+
+
+void DRTParallelRTBeamDelimiterDeviceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        NumberOfParallelRTBeamDelimiters.clear();
+        ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.clear();
+        ParallelRTBeamDelimiterOpeningMode.clear();
+        ParallelRTBeamDelimiterBoundaries.clear();
+        ParallelRTBeamDelimiterLeafMountingSide.clear();
+        ParallelRTBeamDelimiterOpeningExtents.clear();
+    }
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceSequence::Item::isEmpty()
+{
+    return NumberOfParallelRTBeamDelimiters.isEmpty() &&
+           ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.isEmpty() &&
+           ParallelRTBeamDelimiterOpeningMode.isEmpty() &&
+           ParallelRTBeamDelimiterBoundaries.isEmpty() &&
+           ParallelRTBeamDelimiterLeafMountingSide.isEmpty() &&
+           ParallelRTBeamDelimiterOpeningExtents.isEmpty();
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, NumberOfParallelRTBeamDelimiters, "1", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.read(item, "1-n", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterOpeningMode, "1", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterBoundaries, "2-n", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterLeafMountingSide, "1-n", "1C", "ParallelRTBeamDelimiterDeviceSequence");
+        getAndCheckElementFromDataset(item, ParallelRTBeamDelimiterOpeningExtents, "2-2n", "1C", "ParallelRTBeamDelimiterDeviceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(NumberOfParallelRTBeamDelimiters), "1", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        if (result.good()) result = ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence.write(item, "1-n", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmCodeString(ParallelRTBeamDelimiterOpeningMode), "1", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(ParallelRTBeamDelimiterBoundaries), "2-n", "1", "ParallelRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmCodeString(ParallelRTBeamDelimiterLeafMountingSide), "1-n", "1C", "ParallelRTBeamDelimiterDeviceSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(ParallelRTBeamDelimiterOpeningExtents), "2-2n", "1C", "ParallelRTBeamDelimiterDeviceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getNumberOfParallelRTBeamDelimiters(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, NumberOfParallelRTBeamDelimiters).getUint16(value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterBoundaries(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, ParallelRTBeamDelimiterBoundaries).getFloat64(value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterLeafMountingSide(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ParallelRTBeamDelimiterLeafMountingSide, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterOpeningExtents(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, ParallelRTBeamDelimiterOpeningExtents).getFloat64(value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::getParallelRTBeamDelimiterOpeningMode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ParallelRTBeamDelimiterOpeningMode, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setNumberOfParallelRTBeamDelimiters(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return NumberOfParallelRTBeamDelimiters.putUint16(value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterBoundaries(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ParallelRTBeamDelimiterBoundaries.putFloat64(value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterLeafMountingSide(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = ParallelRTBeamDelimiterLeafMountingSide.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterOpeningExtents(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ParallelRTBeamDelimiterOpeningExtents.putFloat64(value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::Item::setParallelRTBeamDelimiterOpeningMode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ParallelRTBeamDelimiterOpeningMode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTParallelRTBeamDelimiterDeviceSequence::DRTParallelRTBeamDelimiterDeviceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::DRTParallelRTBeamDelimiterDeviceSequence(const DRTParallelRTBeamDelimiterDeviceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence &DRTParallelRTBeamDelimiterDeviceSequence::operator=(const DRTParallelRTBeamDelimiterDeviceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::~DRTParallelRTBeamDelimiterDeviceSequence()
+{
+    clear();
+}
+
+
+void DRTParallelRTBeamDelimiterDeviceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTParallelRTBeamDelimiterDeviceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTParallelRTBeamDelimiterDeviceSequence::Item &DRTParallelRTBeamDelimiterDeviceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::read(DcmItem &dataset,
+                                                           const OFString &card,
+                                                           const OFString &type,
+                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ParallelRTBeamDelimiterDeviceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ParallelRTBeamDelimiterDeviceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceSequence::write(DcmItem &dataset,
+                                                            const OFString &card,
+                                                            const OFString &type,
+                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ParallelRTBeamDelimiterDeviceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtpbdos.cc b/dcmrt/libsrc/drtpbdos.cc
new file mode 100644 (file)
index 0000000..6887e2d
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtpbdos.h"
+
+
+// --- item class ---
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::~Item()
+{
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::operator=(const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::~DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence()
+{
+    clear();
+}
+
+
+void DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::Item &DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::read(DcmItem &dataset,
+                                                                               const OFString &card,
+                                                                               const OFString &type,
+                                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence::write(DcmItem &dataset,
+                                                                                const OFString &card,
+                                                                                const OFString &type,
+                                                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ParallelRTBeamDelimiterDeviceOrientationLabelCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index b7a3a85beeecf32d0a5e05e261305f8df013b541..3f350ea05fc10d3d702bde768883d794df0c0566 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTProcedureCodeSequence::gotoFirstItem()
 OFCondition DRTProcedureCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 8805176c19cbef346a02dea896d170ea177163c2..2668385d1a2b47990e01ebe1fc6eaca8fe49b3b0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -30,6 +30,7 @@ DRTProtocolContextSequence::Item::Item(const OFBool emptyDefaultItem)
     MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     NumericValue(DCM_NumericValue),
     ObservationDateTime(DCM_ObservationDateTime),
+    ObservationStartDateTime(DCM_ObservationStartDateTime),
     PersonName(DCM_PersonName),
     RationalDenominatorValue(DCM_RationalDenominatorValue),
     RationalNumeratorValue(DCM_RationalNumeratorValue),
@@ -53,6 +54,7 @@ DRTProtocolContextSequence::Item::Item(const Item &copy)
     MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
     NumericValue(copy.NumericValue),
     ObservationDateTime(copy.ObservationDateTime),
+    ObservationStartDateTime(copy.ObservationStartDateTime),
     PersonName(copy.PersonName),
     RationalDenominatorValue(copy.RationalDenominatorValue),
     RationalNumeratorValue(copy.RationalNumeratorValue),
@@ -84,6 +86,7 @@ DRTProtocolContextSequence::Item &DRTProtocolContextSequence::Item::operator=(co
         MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
         NumericValue = copy.NumericValue;
         ObservationDateTime = copy.ObservationDateTime;
+        ObservationStartDateTime = copy.ObservationStartDateTime;
         PersonName = copy.PersonName;
         RationalDenominatorValue = copy.RationalDenominatorValue;
         RationalNumeratorValue = copy.RationalNumeratorValue;
@@ -104,6 +107,7 @@ void DRTProtocolContextSequence::Item::clear()
         /* clear all DICOM attributes */
         ValueType.clear();
         ObservationDateTime.clear();
+        ObservationStartDateTime.clear();
         ConceptNameCodeSequence.clear();
         DateTime.clear();
         Date.clear();
@@ -127,6 +131,7 @@ OFBool DRTProtocolContextSequence::Item::isEmpty()
 {
     return ValueType.isEmpty() &&
            ObservationDateTime.isEmpty() &&
+           ObservationStartDateTime.isEmpty() &&
            ConceptNameCodeSequence.isEmpty() &&
            DateTime.isEmpty() &&
            Date.isEmpty() &&
@@ -160,6 +165,7 @@ OFCondition DRTProtocolContextSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, ValueType, "1", "1", "ProtocolContextSequence");
         getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "ProtocolContextSequence");
+        getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "ProtocolContextSequence");
         ConceptNameCodeSequence.read(item, "1-n", "1", "ProtocolContextSequence");
         getAndCheckElementFromDataset(item, DateTime, "1", "1C", "ProtocolContextSequence");
         getAndCheckElementFromDataset(item, Date, "1", "1C", "ProtocolContextSequence");
@@ -189,6 +195,7 @@ OFCondition DRTProtocolContextSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "ProtocolContextSequence");
         addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "ProtocolContextSequence");
+        addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "ProtocolContextSequence");
         if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "ProtocolContextSequence");
         addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "ProtocolContextSequence");
         addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "ProtocolContextSequence");
@@ -272,6 +279,15 @@ OFCondition DRTProtocolContextSequence::Item::getObservationDateTime(OFString &v
 }
 
 
+OFCondition DRTProtocolContextSequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ObservationStartDateTime, value, pos);
+}
+
+
 OFCondition DRTProtocolContextSequence::Item::getPersonName(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -396,6 +412,19 @@ OFCondition DRTProtocolContextSequence::Item::setObservationDateTime(const OFStr
 }
 
 
+OFCondition DRTProtocolContextSequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ObservationStartDateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTProtocolContextSequence::Item::setPersonName(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -603,10 +632,12 @@ OFCondition DRTProtocolContextSequence::gotoFirstItem()
 OFCondition DRTProtocolContextSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 1c00ae753daa09d493a4eac722775a50276a8c92..67c3de1a933bf33298fdbb2e481cd17b68ffc090 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPrivateDataElementCharacteristicsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -336,10 +336,12 @@ OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoFirstItem()
 OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index a99bf9e2db3c048eaaea10df8f76b4b8210189bf..41069998630cf4ec793ac4cf7c07d54b362241c6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPrivateDataElementDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -463,10 +463,12 @@ OFCondition DRTPrivateDataElementDefinitionSequence::gotoFirstItem()
 OFCondition DRTPrivateDataElementDefinitionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 1a63055851afe4c100d4a16fb733cda6dcda3b7d..07ffa3fb13cb5a6cfd15d2afc7ddd4cf1a9f272f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTPrimaryFluenceModeSequence::gotoFirstItem()
 OFCondition DRTPrimaryFluenceModeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 9ececd0b9506f82ac41ee66d2c748abaaf882f84..51502f16e3f0cbe1d5583653f5d4b531a10bfea2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTPersonIdentificationCodeSequence::gotoFirstItem()
 OFCondition DRTPersonIdentificationCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 7ee0a627b71271fdba12ce67631dc41f196584d0..1c47f8fdb1be13ac0572d77c991a9bbc5aa08a4f 100644 (file)
@@ -1,14 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *  Last modified on 2022-01-26 by Riesmeier
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -23,6 +22,7 @@ DRTPlanIOD::DRTPlanIOD()
     PatientID(DCM_PatientID),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
+    TypeOfPatientID(DCM_TypeOfPatientID),
     PatientBirthDate(DCM_PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
@@ -79,6 +79,7 @@ DRTPlanIOD::DRTPlanIOD()
     PhysiciansOfRecordIdentificationSequence(),
     NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(),
+    RequestingService(DCM_RequestingService),
     RequestingServiceCodeSequence(),
     ReferencedStudySequence(),
     ProcedureCodeSequence(),
@@ -102,12 +103,15 @@ DRTPlanIOD::DRTPlanIOD()
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
     IssuerOfAdmissionIDSequence(),
+    ReasonForVisit(DCM_ReasonForVisit),
+    ReasonForVisitCodeSequence(),
     ServiceEpisodeID(DCM_ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(),
     ServiceEpisodeDescription(DCM_ServiceEpisodeDescription),
     PatientSexNeutered(DCM_PatientSexNeutered),
     ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(),
     LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(),
@@ -130,6 +134,7 @@ DRTPlanIOD::DRTPlanIOD()
     PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(),
     CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(DCM_TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription),
@@ -140,11 +145,14 @@ DRTPlanIOD::DRTPlanIOD()
     InstitutionAddress(DCM_InstitutionAddress),
     StationName(DCM_StationName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
     UDISequence(),
+    DeviceUID(DCM_DeviceUID),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -157,7 +165,8 @@ DRTPlanIOD::DRTPlanIOD()
     RTPlanTime(DCM_RTPlanTime),
     TreatmentProtocols(DCM_TreatmentProtocols),
     PlanIntent(DCM_PlanIntent),
-    TreatmentSites(DCM_RETIRED_TreatmentSites),
+    TreatmentSite(DCM_TreatmentSite),
+    TreatmentSiteCodeSequence(),
     RTPlanGeometry(DCM_RTPlanGeometry),
     ReferencedStructureSetSequence(),
     ReferencedDoseSequence(),
@@ -212,6 +221,10 @@ DRTPlanIOD::DRTPlanIOD()
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
     PrivateDataElementCharacteristicsSequence(),
+    InstanceOriginStatus(DCM_InstanceOriginStatus),
+    BarcodeValue(DCM_BarcodeValue),
+    ReferencedDefinedProtocolSequence(),
+    ReferencedPerformedProtocolSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -225,6 +238,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     PatientID(copy.PatientID),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
+    TypeOfPatientID(copy.TypeOfPatientID),
     PatientBirthDate(copy.PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
@@ -281,6 +295,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence),
     NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence),
+    RequestingService(copy.RequestingService),
     RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence),
     ReferencedStudySequence(copy.ReferencedStudySequence),
     ProcedureCodeSequence(copy.ProcedureCodeSequence),
@@ -304,12 +319,15 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
     IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence),
+    ReasonForVisit(copy.ReasonForVisit),
+    ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence),
     ServiceEpisodeID(copy.ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence),
     ServiceEpisodeDescription(copy.ServiceEpisodeDescription),
     PatientSexNeutered(copy.PatientSexNeutered),
     ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence),
     LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence),
@@ -332,6 +350,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence),
     CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(copy.TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription),
@@ -342,11 +361,14 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     InstitutionAddress(copy.InstitutionAddress),
     StationName(copy.StationName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
     UDISequence(copy.UDISequence),
+    DeviceUID(copy.DeviceUID),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -359,7 +381,8 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     RTPlanTime(copy.RTPlanTime),
     TreatmentProtocols(copy.TreatmentProtocols),
     PlanIntent(copy.PlanIntent),
-    TreatmentSites(copy.TreatmentSites),
+    TreatmentSite(copy.TreatmentSite),
+    TreatmentSiteCodeSequence(copy.TreatmentSiteCodeSequence),
     RTPlanGeometry(copy.RTPlanGeometry),
     ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence),
     ReferencedDoseSequence(copy.ReferencedDoseSequence),
@@ -414,6 +437,10 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
     PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
+    InstanceOriginStatus(copy.InstanceOriginStatus),
+    BarcodeValue(copy.BarcodeValue),
+    ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence),
+    ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -433,6 +460,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         PatientID = copy.PatientID;
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
+        TypeOfPatientID = copy.TypeOfPatientID;
         PatientBirthDate = copy.PatientBirthDate;
         PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
         PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
@@ -489,6 +517,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence;
         NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy;
         PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence;
+        RequestingService = copy.RequestingService;
         RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence;
         ReferencedStudySequence = copy.ReferencedStudySequence;
         ProcedureCodeSequence = copy.ProcedureCodeSequence;
@@ -512,12 +541,15 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
         IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence;
+        ReasonForVisit = copy.ReasonForVisit;
+        ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence;
         ServiceEpisodeID = copy.ServiceEpisodeID;
         IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence;
         ServiceEpisodeDescription = copy.ServiceEpisodeDescription;
         PatientSexNeutered = copy.PatientSexNeutered;
         ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID;
         ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription;
+        ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence;
         LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent;
         LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType;
         ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence;
@@ -540,6 +572,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription;
         PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence;
         CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep;
+        TreatmentSessionUID = copy.TreatmentSessionUID;
         ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName;
         ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID;
         ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription;
@@ -550,11 +583,14 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         InstitutionAddress = copy.InstitutionAddress;
         StationName = copy.StationName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
         UDISequence = copy.UDISequence;
+        DeviceUID = copy.DeviceUID;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -567,7 +603,8 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         RTPlanTime = copy.RTPlanTime;
         TreatmentProtocols = copy.TreatmentProtocols;
         PlanIntent = copy.PlanIntent;
-        TreatmentSites = copy.TreatmentSites;
+        TreatmentSite = copy.TreatmentSite;
+        TreatmentSiteCodeSequence = copy.TreatmentSiteCodeSequence;
         RTPlanGeometry = copy.RTPlanGeometry;
         ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence;
         ReferencedDoseSequence = copy.ReferencedDoseSequence;
@@ -622,6 +659,10 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
         PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
+        InstanceOriginStatus = copy.InstanceOriginStatus;
+        BarcodeValue = copy.BarcodeValue;
+        ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence;
+        ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -636,6 +677,7 @@ void DRTPlanIOD::clear()
     PatientID.clear();
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
+    TypeOfPatientID.clear();
     PatientBirthDate.clear();
     PatientBirthDateInAlternativeCalendar.clear();
     PatientDeathDateInAlternativeCalendar.clear();
@@ -692,6 +734,7 @@ void DRTPlanIOD::clear()
     PhysiciansOfRecordIdentificationSequence.clear();
     NameOfPhysiciansReadingStudy.clear();
     PhysiciansReadingStudyIdentificationSequence.clear();
+    RequestingService.clear();
     RequestingServiceCodeSequence.clear();
     ReferencedStudySequence.clear();
     ProcedureCodeSequence.clear();
@@ -715,12 +758,15 @@ void DRTPlanIOD::clear()
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
     IssuerOfAdmissionIDSequence.clear();
+    ReasonForVisit.clear();
+    ReasonForVisitCodeSequence.clear();
     ServiceEpisodeID.clear();
     IssuerOfServiceEpisodeIDSequence.clear();
     ServiceEpisodeDescription.clear();
     PatientSexNeutered.clear();
     ClinicalTrialTimePointID.clear();
     ClinicalTrialTimePointDescription.clear();
+    ClinicalTrialTimePointTypeCodeSequence.clear();
     LongitudinalTemporalOffsetFromEvent.clear();
     LongitudinalTemporalEventType.clear();
     ConsentForClinicalTrialUseSequence.clear();
@@ -743,6 +789,7 @@ void DRTPlanIOD::clear()
     PerformedProcedureStepDescription.clear();
     PerformedProtocolCodeSequence.clear();
     CommentsOnThePerformedProcedureStep.clear();
+    TreatmentSessionUID.clear();
     ClinicalTrialCoordinatingCenterName.clear();
     ClinicalTrialSeriesID.clear();
     ClinicalTrialSeriesDescription.clear();
@@ -753,11 +800,14 @@ void DRTPlanIOD::clear()
     InstitutionAddress.clear();
     StationName.clear();
     InstitutionalDepartmentName.clear();
+    InstitutionalDepartmentTypeCodeSequence.clear();
     ManufacturerModelName.clear();
+    ManufacturerDeviceClassUID.clear();
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
     UDISequence.clear();
+    DeviceUID.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -770,7 +820,8 @@ void DRTPlanIOD::clear()
     RTPlanTime.clear();
     TreatmentProtocols.clear();
     PlanIntent.clear();
-    TreatmentSites.clear();
+    TreatmentSite.clear();
+    TreatmentSiteCodeSequence.clear();
     RTPlanGeometry.clear();
     ReferencedStructureSetSequence.clear();
     ReferencedDoseSequence.clear();
@@ -825,6 +876,10 @@ void DRTPlanIOD::clear()
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
     PrivateDataElementCharacteristicsSequence.clear();
+    InstanceOriginStatus.clear();
+    BarcodeValue.clear();
+    ReferencedDefinedProtocolSequence.clear();
+    ReferencedPerformedProtocolSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -888,11 +943,14 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule");
+        InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
         UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -907,7 +965,8 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, RTPlanTime, "1", "2", "RTGeneralPlanModule");
         getAndCheckElementFromDataset(dataset, TreatmentProtocols, "1-n", "3", "RTGeneralPlanModule");
         getAndCheckElementFromDataset(dataset, PlanIntent, "1", "3", "RTGeneralPlanModule");
-        getAndCheckElementFromDataset(dataset, TreatmentSites, "1-n", "3", "RTGeneralPlanModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSite, "1", "3", "RTGeneralPlanModule");
+        TreatmentSiteCodeSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
         getAndCheckElementFromDataset(dataset, RTPlanGeometry, "1", "1", "RTGeneralPlanModule");
         ReferencedStructureSetSequence.read(dataset, "1-n", "1C", "RTGeneralPlanModule");
         ReferencedDoseSequence.read(dataset, "1-n", "3", "RTGeneralPlanModule");
@@ -1000,6 +1059,10 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
         PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule");
+        ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
+        ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -1018,6 +1081,7 @@ OFCondition DRTPlanIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
@@ -1094,6 +1158,7 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset)
         PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule");
         PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule");
         RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1119,6 +1184,8 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
         IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule");
+        ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule");
         IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule");
@@ -1129,6 +1196,7 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule");
+            ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule");
             ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
@@ -1164,6 +1232,7 @@ OFCondition DRTPlanIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule");
         PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName))
@@ -1191,6 +1260,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
@@ -1254,6 +1324,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule");
         if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule");
         if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1281,6 +1352,8 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule");
+            if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule");
@@ -1292,6 +1365,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule");
+            if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule");
             if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
@@ -1317,6 +1391,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/))
@@ -1339,11 +1414,14 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
         if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1358,7 +1436,8 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(RTPlanTime), "1", "2", "RTGeneralPlanModule");
         addElementToDataset(result, dataset, new DcmLongString(TreatmentProtocols), "1-n", "3", "RTGeneralPlanModule");
         addElementToDataset(result, dataset, new DcmCodeString(PlanIntent), "1", "3", "RTGeneralPlanModule");
-        addElementToDataset(result, dataset, new DcmLongString(TreatmentSites), "1-n", "3", "RTGeneralPlanModule");
+        addElementToDataset(result, dataset, new DcmLongString(TreatmentSite), "1", "3", "RTGeneralPlanModule");
+        if (result.good()) result = TreatmentSiteCodeSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
         addElementToDataset(result, dataset, new DcmCodeString(RTPlanGeometry), "1", "1", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedStructureSetSequence.write(dataset, "1-n" ,"1C", "RTGeneralPlanModule");
         if (result.good()) result = ReferencedDoseSequence.write(dataset, "1-n" ,"3", "RTGeneralPlanModule");
@@ -1456,6 +1535,10 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
         if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule");
+        if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
+        if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1513,6 +1596,8 @@ OFBool DRTPlanIOD::isPatientStudyModulePresent(const OFBool /*complete*/)
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
            !IssuerOfAdmissionIDSequence.isEmpty() ||
+           !ReasonForVisit.isEmpty() ||
+           !ReasonForVisitCodeSequence.isEmpty() ||
            !ServiceEpisodeID.isEmpty() ||
            !IssuerOfServiceEpisodeIDSequence.isEmpty() ||
            !ServiceEpisodeDescription.isEmpty() ||
@@ -1525,6 +1610,7 @@ OFBool DRTPlanIOD::isClinicalTrialStudyModulePresent(const OFBool /*complete*/)
     /* check whether at least one attribute is present */
     return !ClinicalTrialTimePointID.isEmpty() ||
            !ClinicalTrialTimePointDescription.isEmpty() ||
+           !ClinicalTrialTimePointTypeCodeSequence.isEmpty() ||
            !LongitudinalTemporalOffsetFromEvent.isEmpty() ||
            !LongitudinalTemporalEventType.isEmpty() ||
            !ConsentForClinicalTrialUseSequence.isEmpty();
@@ -1689,6 +1775,12 @@ OFCondition DRTPlanIOD::getAuthorizationEquipmentCertificationNumber(OFString &v
 }
 
 
+OFCondition DRTPlanIOD::getBarcodeValue(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(BarcodeValue, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getBrachyTreatmentTechnique(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(BrachyTreatmentTechnique, value, pos);
@@ -1827,6 +1919,12 @@ OFCondition DRTPlanIOD::getDeviceSerialNumber(OFString &value, const signed long
 }
 
 
+OFCondition DRTPlanIOD::getDeviceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getEthnicGroup(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EthnicGroup, value, pos);
@@ -1887,6 +1985,12 @@ OFCondition DRTPlanIOD::getInstanceNumber(Sint32 &value, const unsigned long pos
 }
 
 
+OFCondition DRTPlanIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(InstanceOriginStatus, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstitutionAddress, value, pos);
@@ -1941,6 +2045,12 @@ OFCondition DRTPlanIOD::getManufacturer(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTPlanIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getManufacturerModelName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ManufacturerModelName, value, pos);
@@ -2259,6 +2369,12 @@ OFCondition DRTPlanIOD::getRTPlanTime(OFString &value, const signed long pos) co
 }
 
 
+OFCondition DRTPlanIOD::getReasonForVisit(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ReasonForVisit, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getReferringPhysicianName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ReferringPhysicianName, value, pos);
@@ -2271,6 +2387,12 @@ OFCondition DRTPlanIOD::getRelatedGeneralSOPClassUID(OFString &value, const sign
 }
 
 
+OFCondition DRTPlanIOD::getRequestingService(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(RequestingService, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getResponsibleOrganization(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ResponsibleOrganization, value, pos);
@@ -2487,9 +2609,21 @@ OFCondition DRTPlanIOD::getTreatmentProtocols(OFString &value, const signed long
 }
 
 
-OFCondition DRTPlanIOD::getTreatmentSites(OFString &value, const signed long pos) const
+OFCondition DRTPlanIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TreatmentSessionUID, value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getTreatmentSite(OFString &value, const signed long pos) const
 {
-    return getStringValueFromElement(TreatmentSites, value, pos);
+    return getStringValueFromElement(TreatmentSite, value, pos);
+}
+
+
+OFCondition DRTPlanIOD::getTypeOfPatientID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TypeOfPatientID, value, pos);
 }
 
 
@@ -2556,6 +2690,15 @@ OFCondition DRTPlanIOD::setAuthorizationEquipmentCertificationNumber(const OFStr
 }
 
 
+OFCondition DRTPlanIOD::setBarcodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = BarcodeValue.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setBrachyTreatmentTechnique(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2763,6 +2906,15 @@ OFCondition DRTPlanIOD::setDeviceSerialNumber(const OFString &value, const OFBoo
 }
 
 
+OFCondition DRTPlanIOD::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = DeviceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setEthnicGroup(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2841,6 +2993,15 @@ OFCondition DRTPlanIOD::setInstanceNumber(const OFString &value, const OFBool ch
 }
 
 
+OFCondition DRTPlanIOD::setInstanceOriginStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = InstanceOriginStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -2919,6 +3080,15 @@ OFCondition DRTPlanIOD::setManufacturer(const OFString &value, const OFBool chec
 }
 
 
+OFCondition DRTPlanIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ManufacturerDeviceClassUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setManufacturerModelName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3345,6 +3515,15 @@ OFCondition DRTPlanIOD::setRTPlanTime(const OFString &value, const OFBool check)
 }
 
 
+OFCondition DRTPlanIOD::setReasonForVisit(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = ReasonForVisit.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setReferringPhysicianName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal;
@@ -3363,6 +3542,15 @@ OFCondition DRTPlanIOD::setRelatedGeneralSOPClassUID(const OFString &value, cons
 }
 
 
+OFCondition DRTPlanIOD::setRequestingService(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = RequestingService.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setResponsibleOrganization(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3669,11 +3857,29 @@ OFCondition DRTPlanIOD::setTreatmentProtocols(const OFString &value, const OFBoo
 }
 
 
-OFCondition DRTPlanIOD::setTreatmentSites(const OFString &value, const OFBool check)
+OFCondition DRTPlanIOD::setTreatmentSessionUID(const OFString &value, const OFBool check)
 {
-    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1-n") : EC_Normal;
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSessionUID.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTPlanIOD::setTreatmentSite(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSite.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTPlanIOD::setTypeOfPatientID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
     if (result.good())
-        result = TreatmentSites.putOFStringArray(value);
+        result = TypeOfPatientID.putOFStringArray(value);
     return result;
 }
 
diff --git a/dcmrt/libsrc/drtplos.cc b/dcmrt/libsrc/drtplos.cc
new file mode 100644 (file)
index 0000000..982fe58
--- /dev/null
@@ -0,0 +1,691 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTPlanOverviewSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtplos.h"
+
+
+// --- item class ---
+
+DRTPlanOverviewSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CurrentFractionNumber(DCM_CurrentFractionNumber),
+    NumberOfFractionsIncluded(DCM_NumberOfFractionsIncluded),
+    PlanOverviewIndex(DCM_PlanOverviewIndex),
+    PrescriptionOverviewSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    RTPlanLabel(DCM_RTPlanLabel),
+    ReferencedImageSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ReferencedStructureSetSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    TreatmentSite(DCM_TreatmentSite),
+    TreatmentSiteCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+{
+}
+
+
+DRTPlanOverviewSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CurrentFractionNumber(copy.CurrentFractionNumber),
+    NumberOfFractionsIncluded(copy.NumberOfFractionsIncluded),
+    PlanOverviewIndex(copy.PlanOverviewIndex),
+    PrescriptionOverviewSequence(copy.PrescriptionOverviewSequence),
+    RTPlanLabel(copy.RTPlanLabel),
+    ReferencedImageSequence(copy.ReferencedImageSequence),
+    ReferencedStructureSetSequence(copy.ReferencedStructureSetSequence),
+    TreatmentSite(copy.TreatmentSite),
+    TreatmentSiteCodeSequence(copy.TreatmentSiteCodeSequence)
+{
+}
+
+
+DRTPlanOverviewSequence::Item::~Item()
+{
+}
+
+
+DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CurrentFractionNumber = copy.CurrentFractionNumber;
+        NumberOfFractionsIncluded = copy.NumberOfFractionsIncluded;
+        PlanOverviewIndex = copy.PlanOverviewIndex;
+        PrescriptionOverviewSequence = copy.PrescriptionOverviewSequence;
+        RTPlanLabel = copy.RTPlanLabel;
+        ReferencedImageSequence = copy.ReferencedImageSequence;
+        ReferencedStructureSetSequence = copy.ReferencedStructureSetSequence;
+        TreatmentSite = copy.TreatmentSite;
+        TreatmentSiteCodeSequence = copy.TreatmentSiteCodeSequence;
+    }
+    return *this;
+}
+
+
+void DRTPlanOverviewSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        PlanOverviewIndex.clear();
+        RTPlanLabel.clear();
+        NumberOfFractionsIncluded.clear();
+        CurrentFractionNumber.clear();
+        TreatmentSite.clear();
+        TreatmentSiteCodeSequence.clear();
+        PrescriptionOverviewSequence.clear();
+        ReferencedStructureSetSequence.clear();
+        ReferencedImageSequence.clear();
+    }
+}
+
+
+OFBool DRTPlanOverviewSequence::Item::isEmpty()
+{
+    return PlanOverviewIndex.isEmpty() &&
+           RTPlanLabel.isEmpty() &&
+           NumberOfFractionsIncluded.isEmpty() &&
+           CurrentFractionNumber.isEmpty() &&
+           TreatmentSite.isEmpty() &&
+           TreatmentSiteCodeSequence.isEmpty() &&
+           PrescriptionOverviewSequence.isEmpty() &&
+           ReferencedStructureSetSequence.isEmpty() &&
+           ReferencedImageSequence.isEmpty();
+}
+
+
+OFBool DRTPlanOverviewSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, PlanOverviewIndex, "1", "1", "PlanOverviewSequence");
+        getAndCheckElementFromDataset(item, RTPlanLabel, "1", "2", "PlanOverviewSequence");
+        getAndCheckElementFromDataset(item, NumberOfFractionsIncluded, "1", "1C", "PlanOverviewSequence");
+        getAndCheckElementFromDataset(item, CurrentFractionNumber, "1", "1C", "PlanOverviewSequence");
+        getAndCheckElementFromDataset(item, TreatmentSite, "1", "2", "PlanOverviewSequence");
+        TreatmentSiteCodeSequence.read(item, "1-n", "2", "PlanOverviewSequence");
+        PrescriptionOverviewSequence.read(item, "1-n", "2", "PlanOverviewSequence");
+        ReferencedStructureSetSequence.read(item, "1-n", "1C", "PlanOverviewSequence");
+        ReferencedImageSequence.read(item, "1-n", "1C", "PlanOverviewSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(PlanOverviewIndex), "1", "1", "PlanOverviewSequence");
+        addElementToDataset(result, item, new DcmShortString(RTPlanLabel), "1", "2", "PlanOverviewSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(NumberOfFractionsIncluded), "1", "1C", "PlanOverviewSequence");
+        addElementToDataset(result, item, new DcmIntegerString(CurrentFractionNumber), "1", "1C", "PlanOverviewSequence");
+        addElementToDataset(result, item, new DcmLongString(TreatmentSite), "1", "2", "PlanOverviewSequence");
+        if (result.good()) result = TreatmentSiteCodeSequence.write(item, "1-n", "2", "PlanOverviewSequence");
+        if (result.good()) result = PrescriptionOverviewSequence.write(item, "1-n", "2", "PlanOverviewSequence");
+        if (result.good()) result = ReferencedStructureSetSequence.write(item, "1-n", "1C", "PlanOverviewSequence");
+        if (result.good()) result = ReferencedImageSequence.write(item, "1-n", "1C", "PlanOverviewSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::getCurrentFractionNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CurrentFractionNumber, value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::getCurrentFractionNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, CurrentFractionNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::getNumberOfFractionsIncluded(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, NumberOfFractionsIncluded).getUint16(value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::getPlanOverviewIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, PlanOverviewIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::getRTPlanLabel(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RTPlanLabel, value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::getTreatmentSite(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TreatmentSite, value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::setCurrentFractionNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CurrentFractionNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::setNumberOfFractionsIncluded(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return NumberOfFractionsIncluded.putUint16(value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::setPlanOverviewIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return PlanOverviewIndex.putUint16(value, pos);
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::setRTPlanLabel(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = RTPlanLabel.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::Item::setTreatmentSite(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TreatmentSite.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTPlanOverviewSequence::DRTPlanOverviewSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTPlanOverviewSequence::DRTPlanOverviewSequence(const DRTPlanOverviewSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTPlanOverviewSequence &DRTPlanOverviewSequence::operator=(const DRTPlanOverviewSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTPlanOverviewSequence::~DRTPlanOverviewSequence()
+{
+    clear();
+}
+
+
+void DRTPlanOverviewSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTPlanOverviewSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTPlanOverviewSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTPlanOverviewSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTPlanOverviewSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTPlanOverviewSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTPlanOverviewSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTPlanOverviewSequence::Item &DRTPlanOverviewSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTPlanOverviewSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::read(DcmItem &dataset,
+                                          const OFString &card,
+                                          const OFString &type,
+                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_PlanOverviewSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_PlanOverviewSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTPlanOverviewSequence::write(DcmItem &dataset,
+                                           const OFString &card,
+                                           const OFString &type,
+                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PlanOverviewSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 0e8ae045e3facab94c94e04442e5156af60458e0..e8d701a37deb8cc9fe8493cec884590dc6cc358d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTPurposeOfReferenceCodeSequence::gotoFirstItem()
 OFCondition DRTPurposeOfReferenceCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 552942076fbe89f2156b8fc337483ef4e5d5d332..ca0a8f21448b8bb4e2b96051c1262eb2f3536a0a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,8 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const OFBool emptyDefaul
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InstitutionName(DCM_InstitutionName),
+    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonTelecomInformation(DCM_PersonTelecomInformation),
@@ -37,6 +39,8 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const Item &copy)
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionCodeSequence(copy.InstitutionCodeSequence),
     InstitutionName(copy.InstitutionName),
+    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
     PersonTelecomInformation(copy.PersonTelecomInformation),
@@ -58,6 +62,8 @@ DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentifi
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionCodeSequence = copy.InstitutionCodeSequence;
         InstitutionName = copy.InstitutionName;
+        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
         PersonTelecomInformation = copy.PersonTelecomInformation;
@@ -79,6 +85,8 @@ void DRTPhysiciansOfRecordIdentificationSequence::Item::clear()
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
+        InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
     }
 }
 
@@ -91,7 +99,9 @@ OFBool DRTPhysiciansOfRecordIdentificationSequence::Item::isEmpty()
            PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
-           InstitutionCodeSequence.isEmpty();
+           InstitutionCodeSequence.isEmpty() &&
+           InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty();
 }
 
 
@@ -115,6 +125,8 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::read(DcmItem &ite
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansOfRecordIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "PhysiciansOfRecordIdentificationSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "PhysiciansOfRecordIdentificationSequence");
         result = EC_Normal;
     }
     return result;
@@ -134,6 +146,8 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::write(DcmItem &it
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansOfRecordIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "PhysiciansOfRecordIdentificationSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "PhysiciansOfRecordIdentificationSequence");
     }
     return result;
 }
@@ -157,6 +171,15 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getInstitutionNam
 }
 
 
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
+}
+
+
 OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -210,6 +233,19 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setInstitutionNam
 }
 
 
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionalDepartmentName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -373,10 +409,12 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoFirstItem()
 OFCondition DRTPhysiciansOfRecordIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index eca35b64d5929fc39e532849a3fba5485ca35ac9..33e57b696220f63f0d96cfcfdec775267b4557f3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -663,10 +663,12 @@ OFCondition DRTPerformedProtocolCodeSequence::gotoFirstItem()
 OFCondition DRTPerformedProtocolCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtpros.cc b/dcmrt/libsrc/drtpros.cc
new file mode 100644 (file)
index 0000000..d81b1d3
--- /dev/null
@@ -0,0 +1,609 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTPrescriptionOverviewSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtpros.h"
+
+
+// --- item class ---
+
+DRTPrescriptionOverviewSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    EntityLongLabel(DCM_EntityLongLabel),
+    ReferencedROINumber(DCM_ReferencedROINumber),
+    TotalPrescriptionDose(DCM_TotalPrescriptionDose)
+{
+}
+
+
+DRTPrescriptionOverviewSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    EntityLongLabel(copy.EntityLongLabel),
+    ReferencedROINumber(copy.ReferencedROINumber),
+    TotalPrescriptionDose(copy.TotalPrescriptionDose)
+{
+}
+
+
+DRTPrescriptionOverviewSequence::Item::~Item()
+{
+}
+
+
+DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        EntityLongLabel = copy.EntityLongLabel;
+        ReferencedROINumber = copy.ReferencedROINumber;
+        TotalPrescriptionDose = copy.TotalPrescriptionDose;
+    }
+    return *this;
+}
+
+
+void DRTPrescriptionOverviewSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        EntityLongLabel.clear();
+        TotalPrescriptionDose.clear();
+        ReferencedROINumber.clear();
+    }
+}
+
+
+OFBool DRTPrescriptionOverviewSequence::Item::isEmpty()
+{
+    return EntityLongLabel.isEmpty() &&
+           TotalPrescriptionDose.isEmpty() &&
+           ReferencedROINumber.isEmpty();
+}
+
+
+OFBool DRTPrescriptionOverviewSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, EntityLongLabel, "1", "1C", "PrescriptionOverviewSequence");
+        getAndCheckElementFromDataset(item, TotalPrescriptionDose, "1", "1", "PrescriptionOverviewSequence");
+        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "3", "PrescriptionOverviewSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "1C", "PrescriptionOverviewSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(TotalPrescriptionDose), "1", "1", "PrescriptionOverviewSequence");
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "3", "PrescriptionOverviewSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(EntityLongLabel, value, pos);
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedROINumber, value, pos);
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::getTotalPrescriptionDose(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, TotalPrescriptionDose).getFloat32(value, pos);
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = EntityLongLabel.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::setReferencedROINumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedROINumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::Item::setTotalPrescriptionDose(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return TotalPrescriptionDose.putFloat32(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTPrescriptionOverviewSequence::DRTPrescriptionOverviewSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTPrescriptionOverviewSequence::DRTPrescriptionOverviewSequence(const DRTPrescriptionOverviewSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTPrescriptionOverviewSequence &DRTPrescriptionOverviewSequence::operator=(const DRTPrescriptionOverviewSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTPrescriptionOverviewSequence::~DRTPrescriptionOverviewSequence()
+{
+    clear();
+}
+
+
+void DRTPrescriptionOverviewSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTPrescriptionOverviewSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTPrescriptionOverviewSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTPrescriptionOverviewSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTPrescriptionOverviewSequence::Item &DRTPrescriptionOverviewSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::read(DcmItem &dataset,
+                                                  const OFString &card,
+                                                  const OFString &type,
+                                                  const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_PrescriptionOverviewSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_PrescriptionOverviewSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTPrescriptionOverviewSequence::write(DcmItem &dataset,
+                                                   const OFString &card,
+                                                   const OFString &type,
+                                                   const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrescriptionOverviewSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index f6063721536f2966a231029d99b062b85920f42e..adbf8affe5f1b07a44b8b7f262e79c112355ef10 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,8 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const OFBool emptyDe
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InstitutionName(DCM_InstitutionName),
+    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonTelecomInformation(DCM_PersonTelecomInformation),
@@ -37,6 +39,8 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const Item &copy)
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionCodeSequence(copy.InstitutionCodeSequence),
     InstitutionName(copy.InstitutionName),
+    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
     PersonTelecomInformation(copy.PersonTelecomInformation),
@@ -58,6 +62,8 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudy
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionCodeSequence = copy.InstitutionCodeSequence;
         InstitutionName = copy.InstitutionName;
+        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
         PersonTelecomInformation = copy.PersonTelecomInformation;
@@ -79,6 +85,8 @@ void DRTPhysiciansReadingStudyIdentificationSequence::Item::clear()
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
+        InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
     }
 }
 
@@ -91,7 +99,9 @@ OFBool DRTPhysiciansReadingStudyIdentificationSequence::Item::isEmpty()
            PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
-           InstitutionCodeSequence.isEmpty();
+           InstitutionCodeSequence.isEmpty() &&
+           InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty();
 }
 
 
@@ -115,6 +125,8 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::read(DcmItem
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "PhysiciansReadingStudyIdentificationSequence");
         result = EC_Normal;
     }
     return result;
@@ -134,6 +146,8 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::write(DcmItem
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "PhysiciansReadingStudyIdentificationSequence");
     }
     return result;
 }
@@ -157,6 +171,15 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getInstitutio
 }
 
 
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
+}
+
+
 OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -210,6 +233,19 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setInstitutio
 }
 
 
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionalDepartmentName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -373,10 +409,12 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoFirstItem()
 OFCondition DRTPhysiciansReadingStudyIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index e0c6e875d4f9f4d228403b05a7bcda7eb516555f..841a65198e55b3cd11daaa6fe52dfe44b07648df 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTPatientSpeciesCodeSequence::gotoFirstItem()
 OFCondition DRTPatientSpeciesCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 4632ec953abac8d582d3fd7d34fb69d59ed1a147..d554987e367924cc4d931d50cfe8b33685386b1d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTPatientSizeCodeSequence::gotoFirstItem()
 OFCondition DRTPatientSizeCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index e6ce1bda39495b179c656163fd007f2887f37fcf..0248ed3221fedbb83b151db20bedc7e8b0332676 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -546,10 +546,12 @@ OFCondition DRTPatientSetupSequence::gotoFirstItem()
 OFCondition DRTPatientSetupSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 7933cda42166333b4238b1f262dc03a82dc18b39..cbe94f0f034ddb830b4f30fae692b8e2bca6e0f6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTPredecessorStructureSetSequence::gotoFirstItem()
 OFCondition DRTPredecessorStructureSetSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 90b2bade39ba8a06d6e55442390d129b8423573f..8a944c33a1f12db369b7f04c32db661cb85e3cda 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -594,10 +594,12 @@ OFCondition DRTPlannedVerificationImageSequence::gotoFirstItem()
 OFCondition DRTPlannedVerificationImageSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 2d6994bbe72b92ca78860332081fa7e8ac9b3553..e8b161681d75280e6afb750aad6cbd34283a19ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTQuantityDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -23,12 +23,14 @@ DRTQuantityDefinitionSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     ConceptCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ConceptNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ContentItemModifierSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     Date(DCM_Date),
     DateTime(DCM_DateTime),
     FloatingPointValue(DCM_FloatingPointValue),
     MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     NumericValue(DCM_NumericValue),
     ObservationDateTime(DCM_ObservationDateTime),
+    ObservationStartDateTime(DCM_ObservationStartDateTime),
     PersonName(DCM_PersonName),
     RationalDenominatorValue(DCM_RationalDenominatorValue),
     RationalNumeratorValue(DCM_RationalNumeratorValue),
@@ -45,12 +47,14 @@ DRTQuantityDefinitionSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     ConceptCodeSequence(copy.ConceptCodeSequence),
     ConceptNameCodeSequence(copy.ConceptNameCodeSequence),
+    ContentItemModifierSequence(copy.ContentItemModifierSequence),
     Date(copy.Date),
     DateTime(copy.DateTime),
     FloatingPointValue(copy.FloatingPointValue),
     MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
     NumericValue(copy.NumericValue),
     ObservationDateTime(copy.ObservationDateTime),
+    ObservationStartDateTime(copy.ObservationStartDateTime),
     PersonName(copy.PersonName),
     RationalDenominatorValue(copy.RationalDenominatorValue),
     RationalNumeratorValue(copy.RationalNumeratorValue),
@@ -75,12 +79,14 @@ DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::Item::operat
         EmptyDefaultItem = copy.EmptyDefaultItem;
         ConceptCodeSequence = copy.ConceptCodeSequence;
         ConceptNameCodeSequence = copy.ConceptNameCodeSequence;
+        ContentItemModifierSequence = copy.ContentItemModifierSequence;
         Date = copy.Date;
         DateTime = copy.DateTime;
         FloatingPointValue = copy.FloatingPointValue;
         MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
         NumericValue = copy.NumericValue;
         ObservationDateTime = copy.ObservationDateTime;
+        ObservationStartDateTime = copy.ObservationStartDateTime;
         PersonName = copy.PersonName;
         RationalDenominatorValue = copy.RationalDenominatorValue;
         RationalNumeratorValue = copy.RationalNumeratorValue;
@@ -101,6 +107,7 @@ void DRTQuantityDefinitionSequence::Item::clear()
         /* clear all DICOM attributes */
         ValueType.clear();
         ObservationDateTime.clear();
+        ObservationStartDateTime.clear();
         ConceptNameCodeSequence.clear();
         DateTime.clear();
         Date.clear();
@@ -115,6 +122,7 @@ void DRTQuantityDefinitionSequence::Item::clear()
         RationalDenominatorValue.clear();
         MeasurementUnitsCodeSequence.clear();
         ReferencedSOPSequence.clear();
+        ContentItemModifierSequence.clear();
     }
 }
 
@@ -123,6 +131,7 @@ OFBool DRTQuantityDefinitionSequence::Item::isEmpty()
 {
     return ValueType.isEmpty() &&
            ObservationDateTime.isEmpty() &&
+           ObservationStartDateTime.isEmpty() &&
            ConceptNameCodeSequence.isEmpty() &&
            DateTime.isEmpty() &&
            Date.isEmpty() &&
@@ -136,7 +145,8 @@ OFBool DRTQuantityDefinitionSequence::Item::isEmpty()
            RationalNumeratorValue.isEmpty() &&
            RationalDenominatorValue.isEmpty() &&
            MeasurementUnitsCodeSequence.isEmpty() &&
-           ReferencedSOPSequence.isEmpty();
+           ReferencedSOPSequence.isEmpty() &&
+           ContentItemModifierSequence.isEmpty();
 }
 
 
@@ -155,6 +165,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, ValueType, "1", "1", "QuantityDefinitionSequence");
         getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "QuantityDefinitionSequence");
         ConceptNameCodeSequence.read(item, "1-n", "1", "QuantityDefinitionSequence");
         getAndCheckElementFromDataset(item, DateTime, "1", "1C", "QuantityDefinitionSequence");
         getAndCheckElementFromDataset(item, Date, "1", "1C", "QuantityDefinitionSequence");
@@ -169,6 +180,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, RationalDenominatorValue, "1-n", "1C", "QuantityDefinitionSequence");
         MeasurementUnitsCodeSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
         ReferencedSOPSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
+        ContentItemModifierSequence.read(item, "1-n", "3", "QuantityDefinitionSequence");
         result = EC_Normal;
     }
     return result;
@@ -183,6 +195,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "QuantityDefinitionSequence");
         addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "QuantityDefinitionSequence");
         if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "QuantityDefinitionSequence");
         addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "QuantityDefinitionSequence");
         addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "QuantityDefinitionSequence");
@@ -197,6 +210,7 @@ OFCondition DRTQuantityDefinitionSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmUnsignedLong(RationalDenominatorValue), "1-n", "1C", "QuantityDefinitionSequence");
         if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
         if (result.good()) result = ReferencedSOPSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
+        if (result.good()) result = ContentItemModifierSequence.write(item, "1-n", "3", "QuantityDefinitionSequence");
     }
     return result;
 }
@@ -265,6 +279,15 @@ OFCondition DRTQuantityDefinitionSequence::Item::getObservationDateTime(OFString
 }
 
 
+OFCondition DRTQuantityDefinitionSequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ObservationStartDateTime, value, pos);
+}
+
+
 OFCondition DRTQuantityDefinitionSequence::Item::getPersonName(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -389,6 +412,19 @@ OFCondition DRTQuantityDefinitionSequence::Item::setObservationDateTime(const OF
 }
 
 
+OFCondition DRTQuantityDefinitionSequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ObservationStartDateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTQuantityDefinitionSequence::Item::setPersonName(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -596,10 +632,12 @@ OFCondition DRTQuantityDefinitionSequence::gotoFirstItem()
 OFCondition DRTQuantityDefinitionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index bbf3ba112d963d7c951c125306a68948bbff80f3..8d79f35573890e181116e85857a9c2c16a40d958 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -452,10 +452,12 @@ OFCondition DRTRequestAttributesSequence::gotoFirstItem()
 OFCondition DRTRequestAttributesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrbas1.cc b/dcmrt/libsrc/drtrbas1.cc
new file mode 100644 (file)
index 0000000..f7e07e3
--- /dev/null
@@ -0,0 +1,555 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrbas1.h"
+
+
+// --- item class ---
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber)
+{
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber)
+{
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::~Item()
+{
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedBrachyApplicationSetupNumber = copy.ReferencedBrachyApplicationSetupNumber;
+    }
+    return *this;
+}
+
+
+void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedBrachyApplicationSetupNumber.clear();
+    }
+}
+
+
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isEmpty()
+{
+    return ReferencedBrachyApplicationSetupNumber.isEmpty();
+}
+
+
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedBrachyApplicationSetupNumber, "1", "1", "ReferencedBrachyApplicationSetupSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedBrachyApplicationSetupNumber), "1", "1", "ReferencedBrachyApplicationSetupSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedBrachyApplicationSetupNumber, value, pos);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedBrachyApplicationSetupNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedBrachyApplicationSetupNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule()
+{
+    clear();
+}
+
+
+void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::read(DcmItem &dataset,
+                                                                            const OFString &card,
+                                                                            const OFString &type,
+                                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedBrachyApplicationSetupSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedBrachyApplicationSetupSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::write(DcmItem &dataset,
+                                                                             const OFString &card,
+                                                                             const OFString &type,
+                                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBrachyApplicationSetupSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index d9007f452302cce70c2b680100c119313f8f5db2..247930e47bd75f81d29a8f08c1564db58a5e4023 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
+ *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 // --- item class ---
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber)
+    BrachyApplicationSetupDose(DCM_BrachyApplicationSetupDose),
+    BrachyApplicationSetupDoseSpecificationPoint(DCM_BrachyApplicationSetupDoseSpecificationPoint),
+    ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber),
+    ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID)
 {
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::Item(const Item &copy)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber)
+    BrachyApplicationSetupDose(copy.BrachyApplicationSetupDose),
+    BrachyApplicationSetupDoseSpecificationPoint(copy.BrachyApplicationSetupDoseSpecificationPoint),
+    ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber),
+    ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID)
 {
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::~Item()
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::~Item()
 {
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::operator=(const Item &copy)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        BrachyApplicationSetupDose = copy.BrachyApplicationSetupDose;
+        BrachyApplicationSetupDoseSpecificationPoint = copy.BrachyApplicationSetupDoseSpecificationPoint;
         ReferencedBrachyApplicationSetupNumber = copy.ReferencedBrachyApplicationSetupNumber;
+        ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID;
     }
     return *this;
 }
 
 
-void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::clear()
+void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
         ReferencedBrachyApplicationSetupNumber.clear();
+        BrachyApplicationSetupDoseSpecificationPoint.clear();
+        BrachyApplicationSetupDose.clear();
+        ReferencedDoseReferenceUID.clear();
     }
 }
 
 
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isEmpty()
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isEmpty()
 {
-    return ReferencedBrachyApplicationSetupNumber.isEmpty();
+    return ReferencedBrachyApplicationSetupNumber.isEmpty() &&
+           BrachyApplicationSetupDoseSpecificationPoint.isEmpty() &&
+           BrachyApplicationSetupDose.isEmpty() &&
+           ReferencedDoseReferenceUID.isEmpty();
 }
 
 
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::isValid() const
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::read(DcmItem &item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -79,25 +94,76 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::rea
         /* re-initialize object */
         clear();
         getAndCheckElementFromDataset(item, ReferencedBrachyApplicationSetupNumber, "1", "1", "ReferencedBrachyApplicationSetupSequence");
+        getAndCheckElementFromDataset(item, BrachyApplicationSetupDoseSpecificationPoint, "3", "3", "ReferencedBrachyApplicationSetupSequence");
+        getAndCheckElementFromDataset(item, BrachyApplicationSetupDose, "1", "3", "ReferencedBrachyApplicationSetupSequence");
+        getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBrachyApplicationSetupSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::write(DcmItem &item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ReferencedBrachyApplicationSetupNumber), "1", "1", "ReferencedBrachyApplicationSetupSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDoseSpecificationPoint), "3", "3", "ReferencedBrachyApplicationSetupSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDose), "1", "3", "ReferencedBrachyApplicationSetupSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBrachyApplicationSetupSequence");
     }
     return result;
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BrachyApplicationSetupDose, value, pos);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BrachyApplicationSetupDoseSpecificationPoint, value, pos);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64Vector(value);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -106,7 +172,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::get
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -115,7 +181,42 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::get
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BrachyApplicationSetupDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal;
+        if (result.good())
+            result = BrachyApplicationSetupDoseSpecificationPoint.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -128,9 +229,22 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item::set
 }
 
 
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedDoseReferenceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const OFBool emptyDefaultSequence)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -140,7 +254,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyAp
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -166,7 +280,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::DRTReferencedBrachyAp
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &copy)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy)
 {
     if (this != &copy)
     {
@@ -194,13 +308,13 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule &DRTReferencedBrachyAp
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::~DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule()
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule()
 {
     clear();
 }
 
 
-void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::clear()
+void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -219,25 +333,25 @@ void DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::clear()
 }
 
 
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isEmpty()
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::isValid() const
+OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-size_t DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getNumberOfItems() const
+size_t DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoFirstItem()
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -249,19 +363,21 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoFirst
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoNextItem()
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -281,7 +397,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -301,13 +417,13 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::gotoItem(const size_t num)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem(Item *&item) const
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -319,7 +435,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurren
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem()
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -328,7 +444,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBr
 }
 
 
-const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getCurrentItem() const
+const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -337,7 +453,7 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTRefere
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -347,7 +463,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(c
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -357,7 +473,7 @@ DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBr
 }
 
 
-const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::getItem(const size_t num) const
+const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -367,19 +483,19 @@ const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTRefere
 }
 
 
-DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num)
+DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::operator[](const size_t num) const
+const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::addItem(Item *&item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -396,7 +512,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::addItem(I
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -419,7 +535,7 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::insertIte
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeItem(const size_t pos)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -437,10 +553,10 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::removeIte
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::read(DcmItem &dataset,
-                                                                            const OFString &card,
-                                                                            const OFString &type,
-                                                                            const char *moduleName)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::read(DcmItem &dataset,
+                                                                                      const OFString &card,
+                                                                                      const OFString &type,
+                                                                                      const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -487,10 +603,10 @@ OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::read(DcmI
 }
 
 
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule::write(DcmItem &dataset,
-                                                                             const OFString &card,
-                                                                             const OFString &type,
-                                                                             const char *moduleName)
+OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::write(DcmItem &dataset,
+                                                                                       const OFString &card,
+                                                                                       const OFString &type,
+                                                                                       const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbas8.cc b/dcmrt/libsrc/drtrbas8.cc
deleted file mode 100644 (file)
index aabb017..0000000
+++ /dev/null
@@ -1,638 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrbas8.h"
-
-
-// --- item class ---
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    BrachyApplicationSetupDose(DCM_BrachyApplicationSetupDose),
-    BrachyApplicationSetupDoseSpecificationPoint(DCM_BrachyApplicationSetupDoseSpecificationPoint),
-    ReferencedBrachyApplicationSetupNumber(DCM_ReferencedBrachyApplicationSetupNumber)
-{
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    BrachyApplicationSetupDose(copy.BrachyApplicationSetupDose),
-    BrachyApplicationSetupDoseSpecificationPoint(copy.BrachyApplicationSetupDoseSpecificationPoint),
-    ReferencedBrachyApplicationSetupNumber(copy.ReferencedBrachyApplicationSetupNumber)
-{
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::~Item()
-{
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        BrachyApplicationSetupDose = copy.BrachyApplicationSetupDose;
-        BrachyApplicationSetupDoseSpecificationPoint = copy.BrachyApplicationSetupDoseSpecificationPoint;
-        ReferencedBrachyApplicationSetupNumber = copy.ReferencedBrachyApplicationSetupNumber;
-    }
-    return *this;
-}
-
-
-void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedBrachyApplicationSetupNumber.clear();
-        BrachyApplicationSetupDoseSpecificationPoint.clear();
-        BrachyApplicationSetupDose.clear();
-    }
-}
-
-
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isEmpty()
-{
-    return ReferencedBrachyApplicationSetupNumber.isEmpty() &&
-           BrachyApplicationSetupDoseSpecificationPoint.isEmpty() &&
-           BrachyApplicationSetupDose.isEmpty();
-}
-
-
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedBrachyApplicationSetupNumber, "1", "1", "ReferencedBrachyApplicationSetupSequence");
-        getAndCheckElementFromDataset(item, BrachyApplicationSetupDoseSpecificationPoint, "3", "3", "ReferencedBrachyApplicationSetupSequence");
-        getAndCheckElementFromDataset(item, BrachyApplicationSetupDose, "1", "3", "ReferencedBrachyApplicationSetupSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedBrachyApplicationSetupNumber), "1", "1", "ReferencedBrachyApplicationSetupSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDoseSpecificationPoint), "3", "3", "ReferencedBrachyApplicationSetupSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BrachyApplicationSetupDose), "1", "3", "ReferencedBrachyApplicationSetupSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BrachyApplicationSetupDose, value, pos);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BrachyApplicationSetupDoseSpecificationPoint, value, pos);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getBrachyApplicationSetupDoseSpecificationPoint(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BrachyApplicationSetupDoseSpecificationPoint).getFloat64Vector(value);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedBrachyApplicationSetupNumber, value, pos);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::getReferencedBrachyApplicationSetupNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedBrachyApplicationSetupNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BrachyApplicationSetupDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setBrachyApplicationSetupDoseSpecificationPoint(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal;
-        if (result.good())
-            result = BrachyApplicationSetupDoseSpecificationPoint.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item::setReferencedBrachyApplicationSetupNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedBrachyApplicationSetupNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::~DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule()
-{
-    clear();
-}
-
-
-void DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::Item &DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::read(DcmItem &dataset,
-                                                                                      const OFString &card,
-                                                                                      const OFString &type,
-                                                                                      const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedBrachyApplicationSetupSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedBrachyApplicationSetupSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule::write(DcmItem &dataset,
-                                                                                       const OFString &card,
-                                                                                       const OFString &type,
-                                                                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBrachyApplicationSetupSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrbdgs.cc b/dcmrt/libsrc/drtrbdgs.cc
new file mode 100644 (file)
index 0000000..090b29c
--- /dev/null
@@ -0,0 +1,728 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRTBeamDelimiterGeometrySequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrbdgs.h"
+
+
+// --- item class ---
+
+DRTRTBeamDelimiterGeometrySequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CenterOfCircularOutline(DCM_CenterOfCircularOutline),
+    DiameterOfCircularOutline(DCM_DiameterOfCircularOutline),
+    NumberOfPolygonalVertices(DCM_NumberOfPolygonalVertices),
+    OutlineLeftVerticalEdge(DCM_OutlineLeftVerticalEdge),
+    OutlineLowerHorizontalEdge(DCM_OutlineLowerHorizontalEdge),
+    OutlineRightVerticalEdge(DCM_OutlineRightVerticalEdge),
+    OutlineShapeType(DCM_OutlineShapeType),
+    OutlineUpperHorizontalEdge(DCM_OutlineUpperHorizontalEdge),
+    VerticesOfThePolygonalOutline(DCM_VerticesOfThePolygonalOutline)
+{
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CenterOfCircularOutline(copy.CenterOfCircularOutline),
+    DiameterOfCircularOutline(copy.DiameterOfCircularOutline),
+    NumberOfPolygonalVertices(copy.NumberOfPolygonalVertices),
+    OutlineLeftVerticalEdge(copy.OutlineLeftVerticalEdge),
+    OutlineLowerHorizontalEdge(copy.OutlineLowerHorizontalEdge),
+    OutlineRightVerticalEdge(copy.OutlineRightVerticalEdge),
+    OutlineShapeType(copy.OutlineShapeType),
+    OutlineUpperHorizontalEdge(copy.OutlineUpperHorizontalEdge),
+    VerticesOfThePolygonalOutline(copy.VerticesOfThePolygonalOutline)
+{
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::Item::~Item()
+{
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CenterOfCircularOutline = copy.CenterOfCircularOutline;
+        DiameterOfCircularOutline = copy.DiameterOfCircularOutline;
+        NumberOfPolygonalVertices = copy.NumberOfPolygonalVertices;
+        OutlineLeftVerticalEdge = copy.OutlineLeftVerticalEdge;
+        OutlineLowerHorizontalEdge = copy.OutlineLowerHorizontalEdge;
+        OutlineRightVerticalEdge = copy.OutlineRightVerticalEdge;
+        OutlineShapeType = copy.OutlineShapeType;
+        OutlineUpperHorizontalEdge = copy.OutlineUpperHorizontalEdge;
+        VerticesOfThePolygonalOutline = copy.VerticesOfThePolygonalOutline;
+    }
+    return *this;
+}
+
+
+void DRTRTBeamDelimiterGeometrySequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        OutlineShapeType.clear();
+        OutlineLeftVerticalEdge.clear();
+        OutlineRightVerticalEdge.clear();
+        OutlineUpperHorizontalEdge.clear();
+        OutlineLowerHorizontalEdge.clear();
+        CenterOfCircularOutline.clear();
+        DiameterOfCircularOutline.clear();
+        NumberOfPolygonalVertices.clear();
+        VerticesOfThePolygonalOutline.clear();
+    }
+}
+
+
+OFBool DRTRTBeamDelimiterGeometrySequence::Item::isEmpty()
+{
+    return OutlineShapeType.isEmpty() &&
+           OutlineLeftVerticalEdge.isEmpty() &&
+           OutlineRightVerticalEdge.isEmpty() &&
+           OutlineUpperHorizontalEdge.isEmpty() &&
+           OutlineLowerHorizontalEdge.isEmpty() &&
+           CenterOfCircularOutline.isEmpty() &&
+           DiameterOfCircularOutline.isEmpty() &&
+           NumberOfPolygonalVertices.isEmpty() &&
+           VerticesOfThePolygonalOutline.isEmpty();
+}
+
+
+OFBool DRTRTBeamDelimiterGeometrySequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, OutlineShapeType, "1", "1", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, OutlineLeftVerticalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, OutlineRightVerticalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, OutlineUpperHorizontalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, OutlineLowerHorizontalEdge, "1", "1C", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, CenterOfCircularOutline, "2", "1C", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, DiameterOfCircularOutline, "1", "1C", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, NumberOfPolygonalVertices, "1", "1C", "RTBeamDelimiterGeometrySequence");
+        getAndCheckElementFromDataset(item, VerticesOfThePolygonalOutline, "1", "1C", "RTBeamDelimiterGeometrySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmCodeString(OutlineShapeType), "1", "1", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLeftVerticalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineRightVerticalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineUpperHorizontalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(OutlineLowerHorizontalEdge), "1", "1C", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(CenterOfCircularOutline), "2", "1C", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(DiameterOfCircularOutline), "1", "1C", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmUnsignedLong(NumberOfPolygonalVertices), "1", "1C", "RTBeamDelimiterGeometrySequence");
+        addElementToDataset(result, item, new DcmOtherFloat(VerticesOfThePolygonalOutline), "1", "1C", "RTBeamDelimiterGeometrySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getCenterOfCircularOutline(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, CenterOfCircularOutline).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getDiameterOfCircularOutline(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, DiameterOfCircularOutline).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getNumberOfPolygonalVertices(Uint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedLong &, NumberOfPolygonalVertices).getUint32(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineLeftVerticalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineLeftVerticalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineLowerHorizontalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineLowerHorizontalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineRightVerticalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineRightVerticalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineShapeType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(OutlineShapeType, value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::getOutlineUpperHorizontalEdge(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, OutlineUpperHorizontalEdge).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setCenterOfCircularOutline(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return CenterOfCircularOutline.putFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setDiameterOfCircularOutline(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return DiameterOfCircularOutline.putFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setNumberOfPolygonalVertices(const Uint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return NumberOfPolygonalVertices.putUint32(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineLeftVerticalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineLeftVerticalEdge.putFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineLowerHorizontalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineLowerHorizontalEdge.putFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineRightVerticalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineRightVerticalEdge.putFloat64(value, pos);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineShapeType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = OutlineShapeType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::Item::setOutlineUpperHorizontalEdge(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OutlineUpperHorizontalEdge.putFloat64(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTRTBeamDelimiterGeometrySequence::DRTRTBeamDelimiterGeometrySequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::DRTRTBeamDelimiterGeometrySequence(const DRTRTBeamDelimiterGeometrySequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRTBeamDelimiterGeometrySequence &DRTRTBeamDelimiterGeometrySequence::operator=(const DRTRTBeamDelimiterGeometrySequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::~DRTRTBeamDelimiterGeometrySequence()
+{
+    clear();
+}
+
+
+void DRTRTBeamDelimiterGeometrySequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRTBeamDelimiterGeometrySequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRTBeamDelimiterGeometrySequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRTBeamDelimiterGeometrySequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRTBeamDelimiterGeometrySequence::Item &DRTRTBeamDelimiterGeometrySequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::read(DcmItem &dataset,
+                                                     const OFString &card,
+                                                     const OFString &type,
+                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RTBeamDelimiterGeometrySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RTBeamDelimiterGeometrySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRTBeamDelimiterGeometrySequence::write(DcmItem &dataset,
+                                                      const OFString &card,
+                                                      const OFString &type,
+                                                      const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTBeamDelimiterGeometrySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index defb874d8b2ee175b0a7ff50b5a3715c5ae3ca40..66cfd0f1aea267535c79f6d38da5607a42e923e7 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,8 @@ DRTRecordedBlockSequence::Item::Item(const OFBool emptyDefaultItem)
     AccessoryCode(DCM_AccessoryCode),
     BlockName(DCM_BlockName),
     BlockTrayID(DCM_BlockTrayID),
+    NumberOfBlockSlabItems(DCM_NumberOfBlockSlabItems),
+    RecordedBlockSlabSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReferencedBlockNumber(DCM_ReferencedBlockNumber)
 {
 }
@@ -34,6 +36,8 @@ DRTRecordedBlockSequence::Item::Item(const Item &copy)
     AccessoryCode(copy.AccessoryCode),
     BlockName(copy.BlockName),
     BlockTrayID(copy.BlockTrayID),
+    NumberOfBlockSlabItems(copy.NumberOfBlockSlabItems),
+    RecordedBlockSlabSequence(copy.RecordedBlockSlabSequence),
     ReferencedBlockNumber(copy.ReferencedBlockNumber)
 {
 }
@@ -52,6 +56,8 @@ DRTRecordedBlockSequence::Item &DRTRecordedBlockSequence::Item::operator=(const
         AccessoryCode = copy.AccessoryCode;
         BlockName = copy.BlockName;
         BlockTrayID = copy.BlockTrayID;
+        NumberOfBlockSlabItems = copy.NumberOfBlockSlabItems;
+        RecordedBlockSlabSequence = copy.RecordedBlockSlabSequence;
         ReferencedBlockNumber = copy.ReferencedBlockNumber;
     }
     return *this;
@@ -67,6 +73,8 @@ void DRTRecordedBlockSequence::Item::clear()
         AccessoryCode.clear();
         ReferencedBlockNumber.clear();
         BlockName.clear();
+        NumberOfBlockSlabItems.clear();
+        RecordedBlockSlabSequence.clear();
     }
 }
 
@@ -76,7 +84,9 @@ OFBool DRTRecordedBlockSequence::Item::isEmpty()
     return BlockTrayID.isEmpty() &&
            AccessoryCode.isEmpty() &&
            ReferencedBlockNumber.isEmpty() &&
-           BlockName.isEmpty();
+           BlockName.isEmpty() &&
+           NumberOfBlockSlabItems.isEmpty() &&
+           RecordedBlockSlabSequence.isEmpty();
 }
 
 
@@ -97,6 +107,8 @@ OFCondition DRTRecordedBlockSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "RecordedBlockSequence");
         getAndCheckElementFromDataset(item, ReferencedBlockNumber, "1", "1", "RecordedBlockSequence");
         getAndCheckElementFromDataset(item, BlockName, "1", "3", "RecordedBlockSequence");
+        getAndCheckElementFromDataset(item, NumberOfBlockSlabItems, "1", "3", "RecordedBlockSequence");
+        RecordedBlockSlabSequence.read(item, "1-n", "1C", "RecordedBlockSequence");
         result = EC_Normal;
     }
     return result;
@@ -113,6 +125,8 @@ OFCondition DRTRecordedBlockSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "RecordedBlockSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedBlockNumber), "1", "1", "RecordedBlockSequence");
         addElementToDataset(result, item, new DcmLongString(BlockName), "1", "3", "RecordedBlockSequence");
+        addElementToDataset(result, item, new DcmIntegerString(NumberOfBlockSlabItems), "1", "3", "RecordedBlockSequence");
+        if (result.good()) result = RecordedBlockSlabSequence.write(item, "1-n", "1C", "RecordedBlockSequence");
     }
     return result;
 }
@@ -145,6 +159,24 @@ OFCondition DRTRecordedBlockSequence::Item::getBlockTrayID(OFString &value, cons
 }
 
 
+OFCondition DRTRecordedBlockSequence::Item::getNumberOfBlockSlabItems(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(NumberOfBlockSlabItems, value, pos);
+}
+
+
+OFCondition DRTRecordedBlockSequence::Item::getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, NumberOfBlockSlabItems).getSint32(value, pos);
+}
+
+
 OFCondition DRTRecordedBlockSequence::Item::getReferencedBlockNumber(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -202,6 +234,19 @@ OFCondition DRTRecordedBlockSequence::Item::setBlockTrayID(const OFString &value
 }
 
 
+OFCondition DRTRecordedBlockSequence::Item::setNumberOfBlockSlabItems(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = NumberOfBlockSlabItems.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRecordedBlockSequence::Item::setReferencedBlockNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -339,10 +384,12 @@ OFCondition DRTRecordedBlockSequence::gotoFirstItem()
 OFCondition DRTRecordedBlockSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 3512f182ad883ea01f349ceac359d1158c18cb3f..29d109e92af4efa0fd1e7b94bda3747160b25c8d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -339,10 +339,12 @@ OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoFirstItem()
 OFCondition DRTReferencedBolusSequenceInRTBeamsModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrbos2.cc b/dcmrt/libsrc/drtrbos2.cc
new file mode 100644 (file)
index 0000000..79ca73a
--- /dev/null
@@ -0,0 +1,584 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrbos2.h"
+
+
+// --- item class ---
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    ReferencedROINumber(DCM_ReferencedROINumber)
+{
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    ReferencedROINumber(copy.ReferencedROINumber)
+{
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        ReferencedROINumber = copy.ReferencedROINumber;
+    }
+    return *this;
+}
+
+
+void DRTReferencedBolusSequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedROINumber.clear();
+        AccessoryCode.clear();
+    }
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return ReferencedROINumber.isEmpty() &&
+           AccessoryCode.isEmpty();
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedROINumber, value, pos);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setReferencedROINumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedROINumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule &DRTReferencedBolusSequenceInRTIonBeamsModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::~DRTReferencedBolusSequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTReferencedBolusSequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedBolusSequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedBolusSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                                const OFString &card,
+                                                                const OFString &type,
+                                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrbos3.cc b/dcmrt/libsrc/drtrbos3.cc
new file mode 100644 (file)
index 0000000..edf1e5e
--- /dev/null
@@ -0,0 +1,584 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrbos3.h"
+
+
+// --- item class ---
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    ReferencedROINumber(DCM_ReferencedROINumber)
+{
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    ReferencedROINumber(copy.ReferencedROINumber)
+{
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
+{
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        ReferencedROINumber = copy.ReferencedROINumber;
+    }
+    return *this;
+}
+
+
+void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedROINumber.clear();
+        AccessoryCode.clear();
+    }
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
+{
+    return ReferencedROINumber.isEmpty() &&
+           AccessoryCode.isEmpty();
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedROINumber, value, pos);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedROINumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedROINumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule()
+{
+    clear();
+}
+
+
+void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
+                                                                            const OFString &card,
+                                                                            const OFString &type,
+                                                                            const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedBolusSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
+                                                                             const OFString &card,
+                                                                             const OFString &type,
+                                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrbos6.cc b/dcmrt/libsrc/drtrbos6.cc
deleted file mode 100644 (file)
index e9367e5..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrbos6.h"
-
-
-// --- item class ---
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    ReferencedROINumber(DCM_ReferencedROINumber)
-{
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    ReferencedROINumber(copy.ReferencedROINumber)
-{
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        ReferencedROINumber = copy.ReferencedROINumber;
-    }
-    return *this;
-}
-
-
-void DRTReferencedBolusSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedROINumber.clear();
-        AccessoryCode.clear();
-    }
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return ReferencedROINumber.isEmpty() &&
-           AccessoryCode.isEmpty();
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AccessoryCode, value, pos);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedROINumber, value, pos);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::Item::setReferencedROINumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedROINumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::DRTReferencedBolusSequenceInRTIonBeamsModule(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule &DRTReferencedBolusSequenceInRTIonBeamsModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::~DRTReferencedBolusSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTReferencedBolusSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedBolusSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedBolusSequenceInRTIonBeamsModule::Item &DRTReferencedBolusSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                               const OFString &card,
-                                                               const OFString &type,
-                                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedBolusSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                                const OFString &card,
-                                                                const OFString &type,
-                                                                const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrbos7.cc b/dcmrt/libsrc/drtrbos7.cc
deleted file mode 100644 (file)
index ed7176d..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrbos7.h"
-
-
-// --- item class ---
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    ReferencedROINumber(DCM_ReferencedROINumber)
-{
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    ReferencedROINumber(copy.ReferencedROINumber)
-{
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
-{
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        ReferencedROINumber = copy.ReferencedROINumber;
-    }
-    return *this;
-}
-
-
-void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedROINumber.clear();
-        AccessoryCode.clear();
-    }
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
-{
-    return ReferencedROINumber.isEmpty() &&
-           AccessoryCode.isEmpty();
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ReferencedBolusSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "ReferencedBolusSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ReferencedBolusSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "ReferencedBolusSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getAccessoryCode(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AccessoryCode, value, pos);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedROINumber, value, pos);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setAccessoryCode(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AccessoryCode.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedROINumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedROINumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::~DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule()
-{
-    clear();
-}
-
-
-void DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::Item &DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
-                                                                            const OFString &card,
-                                                                            const OFString &type,
-                                                                            const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedBolusSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedBolusSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
-                                                                             const OFString &card,
-                                                                             const OFString &type,
-                                                                             const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBolusSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrbs1.cc b/dcmrt/libsrc/drtrbs1.cc
new file mode 100644 (file)
index 0000000..ff2379d
--- /dev/null
@@ -0,0 +1,562 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedBeamSequenceInRTDoseModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrbs1.h"
+
+
+// --- item class ---
+
+DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedBeamNumber(DCM_ReferencedBeamNumber),
+    ReferencedControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+{
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedBeamNumber(copy.ReferencedBeamNumber),
+    ReferencedControlPointSequence(copy.ReferencedControlPointSequence)
+{
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::Item::~Item()
+{
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedBeamNumber = copy.ReferencedBeamNumber;
+        ReferencedControlPointSequence = copy.ReferencedControlPointSequence;
+    }
+    return *this;
+}
+
+
+void DRTReferencedBeamSequenceInRTDoseModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedBeamNumber.clear();
+        ReferencedControlPointSequence.clear();
+    }
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isEmpty()
+{
+    return ReferencedBeamNumber.isEmpty() &&
+           ReferencedControlPointSequence.isEmpty();
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence");
+        ReferencedControlPointSequence.read(item, "1-n", "1C", "ReferencedBeamSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence");
+        if (result.good()) result = ReferencedControlPointSequence.write(item, "1-n", "1C", "ReferencedBeamSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedBeamNumber, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedBeamNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule &DRTReferencedBeamSequenceInRTDoseModule::operator=(const DRTReferencedBeamSequenceInRTDoseModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::~DRTReferencedBeamSequenceInRTDoseModule()
+{
+    clear();
+}
+
+
+void DRTReferencedBeamSequenceInRTDoseModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTDoseModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTDoseModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedBeamSequenceInRTDoseModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::read(DcmItem &dataset,
+                                                          const OFString &card,
+                                                          const OFString &type,
+                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedBeamSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTDoseModule::write(DcmItem &dataset,
+                                                           const OFString &card,
+                                                           const OFString &type,
+                                                           const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index e5928e9a692c918020c8efbe8c2e6eee2f17fb69..72771d68a33915b9d6b0e75c9c2f27ae02643686 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferencedBeamSequenceInRTDoseModule
+ *  Source file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 // --- item class ---
 
-DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    AlternateBeamDose(DCM_AlternateBeamDose),
+    AlternateBeamDoseType(DCM_AlternateBeamDoseType),
+    BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit),
+    BeamDose(DCM_BeamDose),
+    BeamDoseType(DCM_BeamDoseType),
+    BeamMeterset(DCM_BeamMeterset),
+    DoseCalibrationConditionsSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    DoseCalibrationConditionsVerifiedFlag(DCM_DoseCalibrationConditionsVerifiedFlag),
+    RadiationDeviceConfigurationAndCommissioningKeySequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReferencedBeamNumber(DCM_ReferencedBeamNumber),
-    ReferencedControlPointSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID)
 {
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item::Item(const Item &copy)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AlternateBeamDose(copy.AlternateBeamDose),
+    AlternateBeamDoseType(copy.AlternateBeamDoseType),
+    BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit),
+    BeamDose(copy.BeamDose),
+    BeamDoseType(copy.BeamDoseType),
+    BeamMeterset(copy.BeamMeterset),
+    DoseCalibrationConditionsSequence(copy.DoseCalibrationConditionsSequence),
+    DoseCalibrationConditionsVerifiedFlag(copy.DoseCalibrationConditionsVerifiedFlag),
+    RadiationDeviceConfigurationAndCommissioningKeySequence(copy.RadiationDeviceConfigurationAndCommissioningKeySequence),
     ReferencedBeamNumber(copy.ReferencedBeamNumber),
-    ReferencedControlPointSequence(copy.ReferencedControlPointSequence)
+    ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID)
 {
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item::~Item()
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::~Item()
 {
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::Item::operator=(const Item &copy)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        AlternateBeamDose = copy.AlternateBeamDose;
+        AlternateBeamDoseType = copy.AlternateBeamDoseType;
+        BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit;
+        BeamDose = copy.BeamDose;
+        BeamDoseType = copy.BeamDoseType;
+        BeamMeterset = copy.BeamMeterset;
+        DoseCalibrationConditionsSequence = copy.DoseCalibrationConditionsSequence;
+        DoseCalibrationConditionsVerifiedFlag = copy.DoseCalibrationConditionsVerifiedFlag;
+        RadiationDeviceConfigurationAndCommissioningKeySequence = copy.RadiationDeviceConfigurationAndCommissioningKeySequence;
         ReferencedBeamNumber = copy.ReferencedBeamNumber;
-        ReferencedControlPointSequence = copy.ReferencedControlPointSequence;
+        ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID;
     }
     return *this;
 }
 
 
-void DRTReferencedBeamSequenceInRTDoseModule::Item::clear()
+void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
         ReferencedBeamNumber.clear();
-        ReferencedControlPointSequence.clear();
+        ReferencedDoseReferenceUID.clear();
+        BeamDose.clear();
+        BeamDoseType.clear();
+        AlternateBeamDose.clear();
+        AlternateBeamDoseType.clear();
+        BeamMeterset.clear();
+        BeamDeliveryDurationLimit.clear();
+        DoseCalibrationConditionsVerifiedFlag.clear();
+        DoseCalibrationConditionsSequence.clear();
+        RadiationDeviceConfigurationAndCommissioningKeySequence.clear();
     }
 }
 
 
-OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isEmpty()
+OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty()
 {
     return ReferencedBeamNumber.isEmpty() &&
-           ReferencedControlPointSequence.isEmpty();
+           ReferencedDoseReferenceUID.isEmpty() &&
+           BeamDose.isEmpty() &&
+           BeamDoseType.isEmpty() &&
+           AlternateBeamDose.isEmpty() &&
+           AlternateBeamDoseType.isEmpty() &&
+           BeamMeterset.isEmpty() &&
+           BeamDeliveryDurationLimit.isEmpty() &&
+           DoseCalibrationConditionsVerifiedFlag.isEmpty() &&
+           DoseCalibrationConditionsSequence.isEmpty() &&
+           RadiationDeviceConfigurationAndCommissioningKeySequence.isEmpty();
 }
 
 
-OFBool DRTReferencedBeamSequenceInRTDoseModule::Item::isValid() const
+OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::read(DcmItem &item)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -84,27 +129,135 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::read(DcmItem &item)
         /* re-initialize object */
         clear();
         getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence");
-        ReferencedControlPointSequence.read(item, "1-n", "1C", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, DoseCalibrationConditionsVerifiedFlag, "1", "3", "ReferencedBeamSequence");
+        DoseCalibrationConditionsSequence.read(item, "1-n", "1C", "ReferencedBeamSequence");
+        RadiationDeviceConfigurationAndCommissioningKeySequence.read(item, "1-n", "1C", "ReferencedBeamSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::write(DcmItem &item)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence");
-        if (result.good()) result = ReferencedControlPointSequence.write(item, "1-n", "1C", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(DoseCalibrationConditionsVerifiedFlag), "1", "3", "ReferencedBeamSequence");
+        if (result.good()) result = DoseCalibrationConditionsSequence.write(item, "1-n", "1C", "ReferencedBeamSequence");
+        if (result.good()) result = RadiationDeviceConfigurationAndCommissioningKeySequence.write(item, "1-n", "1C", "ReferencedBeamSequence");
     }
     return result;
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDose, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDoseType, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamDose, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamDoseType, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamMeterset, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DoseCalibrationConditionsVerifiedFlag, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -113,7 +266,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumb
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -122,7 +275,103 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::getReferencedBeamNumb
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return BeamDeliveryDurationLimit.putFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamMeterset(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamMeterset.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DoseCalibrationConditionsVerifiedFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -135,9 +384,22 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::Item::setReferencedBeamNumb
 }
 
 
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedDoseReferenceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
-DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const OFBool emptyDefaultSequence)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -147,7 +409,7 @@ DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule(const DRTReferencedBeamSequenceInRTDoseModule &copy)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -173,7 +435,7 @@ DRTReferencedBeamSequenceInRTDoseModule::DRTReferencedBeamSequenceInRTDoseModule
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule &DRTReferencedBeamSequenceInRTDoseModule::operator=(const DRTReferencedBeamSequenceInRTDoseModule &copy)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy)
 {
     if (this != &copy)
     {
@@ -201,13 +463,13 @@ DRTReferencedBeamSequenceInRTDoseModule &DRTReferencedBeamSequenceInRTDoseModule
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::~DRTReferencedBeamSequenceInRTDoseModule()
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule()
 {
     clear();
 }
 
 
-void DRTReferencedBeamSequenceInRTDoseModule::clear()
+void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -226,25 +488,25 @@ void DRTReferencedBeamSequenceInRTDoseModule::clear()
 }
 
 
-OFBool DRTReferencedBeamSequenceInRTDoseModule::isEmpty()
+OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferencedBeamSequenceInRTDoseModule::isValid() const
+OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-size_t DRTReferencedBeamSequenceInRTDoseModule::getNumberOfItems() const
+size_t DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoFirstItem()
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -256,19 +518,21 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoFirstItem()
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoNextItem()
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -288,7 +552,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num,
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -308,13 +572,13 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num,
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::gotoItem(const size_t num)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem(Item *&item) const
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -326,7 +590,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem(Item *&item)
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem()
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -335,7 +599,7 @@ DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDose
 }
 
 
-const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getCurrentItem() const
+const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -344,7 +608,7 @@ const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceIn
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -354,7 +618,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num, I
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -364,7 +628,7 @@ DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDose
 }
 
 
-const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::getItem(const size_t num) const
+const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -374,19 +638,19 @@ const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceIn
 }
 
 
-DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num)
+DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedBeamSequenceInRTDoseModule::Item &DRTReferencedBeamSequenceInRTDoseModule::operator[](const size_t num) const
+const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::addItem(Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -403,7 +667,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -426,7 +690,7 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::insertItem(const size_t pos
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const size_t pos)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -444,10 +708,10 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::removeItem(const size_t pos
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::read(DcmItem &dataset,
-                                                          const OFString &card,
-                                                          const OFString &type,
-                                                          const char *moduleName)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset,
+                                                                            const OFString &card,
+                                                                            const OFString &type,
+                                                                            const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -494,10 +758,10 @@ OFCondition DRTReferencedBeamSequenceInRTDoseModule::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTReferencedBeamSequenceInRTDoseModule::write(DcmItem &dataset,
-                                                           const OFString &card,
-                                                           const OFString &type,
-                                                           const char *moduleName)
+OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset,
+                                                                             const OFString &card,
+                                                                             const OFString &type,
+                                                                             const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrbs3.cc b/dcmrt/libsrc/drtrbs3.cc
new file mode 100644 (file)
index 0000000..bf88762
--- /dev/null
@@ -0,0 +1,824 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrbs3.h"
+
+
+// --- item class ---
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AlternateBeamDose(DCM_AlternateBeamDose),
+    AlternateBeamDoseType(DCM_AlternateBeamDoseType),
+    BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit),
+    BeamDose(DCM_BeamDose),
+    BeamDoseType(DCM_BeamDoseType),
+    BeamMeterset(DCM_BeamMeterset),
+    DoseCalibrationConditionsSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    DoseCalibrationConditionsVerifiedFlag(DCM_DoseCalibrationConditionsVerifiedFlag),
+    RadiationDeviceConfigurationAndCommissioningKeySequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ReferencedBeamNumber(DCM_ReferencedBeamNumber),
+    ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID)
+{
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AlternateBeamDose(copy.AlternateBeamDose),
+    AlternateBeamDoseType(copy.AlternateBeamDoseType),
+    BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit),
+    BeamDose(copy.BeamDose),
+    BeamDoseType(copy.BeamDoseType),
+    BeamMeterset(copy.BeamMeterset),
+    DoseCalibrationConditionsSequence(copy.DoseCalibrationConditionsSequence),
+    DoseCalibrationConditionsVerifiedFlag(copy.DoseCalibrationConditionsVerifiedFlag),
+    RadiationDeviceConfigurationAndCommissioningKeySequence(copy.RadiationDeviceConfigurationAndCommissioningKeySequence),
+    ReferencedBeamNumber(copy.ReferencedBeamNumber),
+    ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID)
+{
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::~Item()
+{
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AlternateBeamDose = copy.AlternateBeamDose;
+        AlternateBeamDoseType = copy.AlternateBeamDoseType;
+        BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit;
+        BeamDose = copy.BeamDose;
+        BeamDoseType = copy.BeamDoseType;
+        BeamMeterset = copy.BeamMeterset;
+        DoseCalibrationConditionsSequence = copy.DoseCalibrationConditionsSequence;
+        DoseCalibrationConditionsVerifiedFlag = copy.DoseCalibrationConditionsVerifiedFlag;
+        RadiationDeviceConfigurationAndCommissioningKeySequence = copy.RadiationDeviceConfigurationAndCommissioningKeySequence;
+        ReferencedBeamNumber = copy.ReferencedBeamNumber;
+        ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedBeamNumber.clear();
+        ReferencedDoseReferenceUID.clear();
+        BeamDose.clear();
+        BeamDoseType.clear();
+        AlternateBeamDose.clear();
+        AlternateBeamDoseType.clear();
+        BeamMeterset.clear();
+        BeamDeliveryDurationLimit.clear();
+        DoseCalibrationConditionsVerifiedFlag.clear();
+        DoseCalibrationConditionsSequence.clear();
+        RadiationDeviceConfigurationAndCommissioningKeySequence.clear();
+    }
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isEmpty()
+{
+    return ReferencedBeamNumber.isEmpty() &&
+           ReferencedDoseReferenceUID.isEmpty() &&
+           BeamDose.isEmpty() &&
+           BeamDoseType.isEmpty() &&
+           AlternateBeamDose.isEmpty() &&
+           AlternateBeamDoseType.isEmpty() &&
+           BeamMeterset.isEmpty() &&
+           BeamDeliveryDurationLimit.isEmpty() &&
+           DoseCalibrationConditionsVerifiedFlag.isEmpty() &&
+           DoseCalibrationConditionsSequence.isEmpty() &&
+           RadiationDeviceConfigurationAndCommissioningKeySequence.isEmpty();
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence");
+        getAndCheckElementFromDataset(item, DoseCalibrationConditionsVerifiedFlag, "1", "3", "ReferencedBeamSequence");
+        DoseCalibrationConditionsSequence.read(item, "1-n", "1C", "ReferencedBeamSequence");
+        RadiationDeviceConfigurationAndCommissioningKeySequence.read(item, "1-n", "1C", "ReferencedBeamSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence");
+        addElementToDataset(result, item, new DcmCodeString(DoseCalibrationConditionsVerifiedFlag), "1", "3", "ReferencedBeamSequence");
+        if (result.good()) result = DoseCalibrationConditionsSequence.write(item, "1-n", "1C", "ReferencedBeamSequence");
+        if (result.good()) result = RadiationDeviceConfigurationAndCommissioningKeySequence.write(item, "1-n", "1C", "ReferencedBeamSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDose, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlternateBeamDoseType, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamDose, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamDoseType, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(BeamMeterset, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getDoseCalibrationConditionsVerifiedFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DoseCalibrationConditionsVerifiedFlag, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedBeamNumber, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlternateBeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return BeamDeliveryDurationLimit.putFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDoseType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamDoseType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamMeterset(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BeamMeterset.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setDoseCalibrationConditionsVerifiedFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DoseCalibrationConditionsVerifiedFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedBeamNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedDoseReferenceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::~DRTReferencedBeamSequenceInRTFractionSchemeModule()
+{
+    clear();
+}
+
+
+void DRTReferencedBeamSequenceInRTFractionSchemeModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedBeamSequenceInRTFractionSchemeModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::read(DcmItem &dataset,
+                                                                    const OFString &card,
+                                                                    const OFString &type,
+                                                                    const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedBeamSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::write(DcmItem &dataset,
+                                                                     const OFString &card,
+                                                                     const OFString &type,
+                                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrbs4.cc b/dcmrt/libsrc/drtrbs4.cc
deleted file mode 100644 (file)
index 2b7b664..0000000
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2019, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *  Last modified on 2019-10-31 by Riesmeier
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrbs4.h"
-
-
-// --- item class ---
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AlternateBeamDose(DCM_AlternateBeamDose),
-    AlternateBeamDoseType(DCM_AlternateBeamDoseType),
-    BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit),
-    BeamDose(DCM_BeamDose),
-    BeamDoseSpecificationPoint(DCM_RETIRED_BeamDoseSpecificationPoint),
-    BeamDoseType(DCM_BeamDoseType),
-    BeamMeterset(DCM_BeamMeterset),
-    ReferencedBeamNumber(DCM_ReferencedBeamNumber),
-    ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID)
-{
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AlternateBeamDose(copy.AlternateBeamDose),
-    AlternateBeamDoseType(copy.AlternateBeamDoseType),
-    BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit),
-    BeamDose(copy.BeamDose),
-    BeamDoseSpecificationPoint(copy.BeamDoseSpecificationPoint),
-    BeamDoseType(copy.BeamDoseType),
-    BeamMeterset(copy.BeamMeterset),
-    ReferencedBeamNumber(copy.ReferencedBeamNumber),
-    ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID)
-{
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::~Item()
-{
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AlternateBeamDose = copy.AlternateBeamDose;
-        AlternateBeamDoseType = copy.AlternateBeamDoseType;
-        BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit;
-        BeamDose = copy.BeamDose;
-        BeamDoseSpecificationPoint = copy.BeamDoseSpecificationPoint;
-        BeamDoseType = copy.BeamDoseType;
-        BeamMeterset = copy.BeamMeterset;
-        ReferencedBeamNumber = copy.ReferencedBeamNumber;
-        ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedBeamNumber.clear();
-        BeamDoseSpecificationPoint.clear();
-        ReferencedDoseReferenceUID.clear();
-        BeamDose.clear();
-        BeamDoseType.clear();
-        AlternateBeamDose.clear();
-        AlternateBeamDoseType.clear();
-        BeamMeterset.clear();
-        BeamDeliveryDurationLimit.clear();
-    }
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty()
-{
-    return ReferencedBeamNumber.isEmpty() &&
-           BeamDoseSpecificationPoint.isEmpty() &&
-           ReferencedDoseReferenceUID.isEmpty() &&
-           BeamDose.isEmpty() &&
-           BeamDoseType.isEmpty() &&
-           AlternateBeamDose.isEmpty() &&
-           AlternateBeamDoseType.isEmpty() &&
-           BeamMeterset.isEmpty() &&
-           BeamDeliveryDurationLimit.isEmpty();
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDoseSpecificationPoint, "3", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BeamDoseSpecificationPoint), "3", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AlternateBeamDose, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AlternateBeamDoseType, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamDose, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseSpecificationPoint(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamDoseSpecificationPoint, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseSpecificationPoint(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64Vector(value);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamDoseType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamDoseType, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamMeterset, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedBeamNumber, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AlternateBeamDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AlternateBeamDoseType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return BeamDeliveryDurationLimit.putFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BeamDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDoseSpecificationPoint(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal;
-        if (result.good())
-            result = BeamDoseSpecificationPoint.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamDoseType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BeamDoseType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setBeamMeterset(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BeamMeterset.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedBeamNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedDoseReferenceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule()
-{
-    clear();
-}
-
-
-void DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset,
-                                                                            const OFString &card,
-                                                                            const OFString &type,
-                                                                            const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedBeamSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset,
-                                                                             const OFString &card,
-                                                                             const OFString &type,
-                                                                             const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrbs8.cc b/dcmrt/libsrc/drtrbs8.cc
deleted file mode 100644 (file)
index 40b8757..0000000
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2019, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *  Last modified on 2019-10-31 by Riesmeier
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrbs8.h"
-
-
-// --- item class ---
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    AlternateBeamDose(DCM_AlternateBeamDose),
-    AlternateBeamDoseType(DCM_AlternateBeamDoseType),
-    BeamDeliveryDurationLimit(DCM_BeamDeliveryDurationLimit),
-    BeamDose(DCM_BeamDose),
-    BeamDoseSpecificationPoint(DCM_RETIRED_BeamDoseSpecificationPoint),
-    BeamDoseType(DCM_BeamDoseType),
-    BeamMeterset(DCM_BeamMeterset),
-    ReferencedBeamNumber(DCM_ReferencedBeamNumber),
-    ReferencedDoseReferenceUID(DCM_ReferencedDoseReferenceUID)
-{
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AlternateBeamDose(copy.AlternateBeamDose),
-    AlternateBeamDoseType(copy.AlternateBeamDoseType),
-    BeamDeliveryDurationLimit(copy.BeamDeliveryDurationLimit),
-    BeamDose(copy.BeamDose),
-    BeamDoseSpecificationPoint(copy.BeamDoseSpecificationPoint),
-    BeamDoseType(copy.BeamDoseType),
-    BeamMeterset(copy.BeamMeterset),
-    ReferencedBeamNumber(copy.ReferencedBeamNumber),
-    ReferencedDoseReferenceUID(copy.ReferencedDoseReferenceUID)
-{
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::~Item()
-{
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        AlternateBeamDose = copy.AlternateBeamDose;
-        AlternateBeamDoseType = copy.AlternateBeamDoseType;
-        BeamDeliveryDurationLimit = copy.BeamDeliveryDurationLimit;
-        BeamDose = copy.BeamDose;
-        BeamDoseSpecificationPoint = copy.BeamDoseSpecificationPoint;
-        BeamDoseType = copy.BeamDoseType;
-        BeamMeterset = copy.BeamMeterset;
-        ReferencedBeamNumber = copy.ReferencedBeamNumber;
-        ReferencedDoseReferenceUID = copy.ReferencedDoseReferenceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedBeamNumber.clear();
-        BeamDoseSpecificationPoint.clear();
-        ReferencedDoseReferenceUID.clear();
-        BeamDose.clear();
-        BeamDoseType.clear();
-        AlternateBeamDose.clear();
-        AlternateBeamDoseType.clear();
-        BeamMeterset.clear();
-        BeamDeliveryDurationLimit.clear();
-    }
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isEmpty()
-{
-    return ReferencedBeamNumber.isEmpty() &&
-           BeamDoseSpecificationPoint.isEmpty() &&
-           ReferencedDoseReferenceUID.isEmpty() &&
-           BeamDose.isEmpty() &&
-           BeamDoseType.isEmpty() &&
-           AlternateBeamDose.isEmpty() &&
-           AlternateBeamDoseType.isEmpty() &&
-           BeamMeterset.isEmpty() &&
-           BeamDeliveryDurationLimit.isEmpty();
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDoseSpecificationPoint, "3", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, ReferencedDoseReferenceUID, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDose, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDoseType, "1", "1C", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, AlternateBeamDose, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, AlternateBeamDoseType, "1", "1C", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamMeterset, "1", "3", "ReferencedBeamSequence");
-        getAndCheckElementFromDataset(item, BeamDeliveryDurationLimit, "1", "3", "ReferencedBeamSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BeamDoseSpecificationPoint), "3", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedDoseReferenceUID), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BeamDose), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmCodeString(BeamDoseType), "1", "1C", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(AlternateBeamDose), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmCodeString(AlternateBeamDoseType), "1", "1C", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmDecimalString(BeamMeterset), "1", "3", "ReferencedBeamSequence");
-        addElementToDataset(result, item, new DcmFloatingPointDouble(BeamDeliveryDurationLimit), "1", "3", "ReferencedBeamSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AlternateBeamDose, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, AlternateBeamDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getAlternateBeamDoseType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(AlternateBeamDoseType, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDeliveryDurationLimit(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointDouble &, BeamDeliveryDurationLimit).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamDose, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseSpecificationPoint(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamDoseSpecificationPoint, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseSpecificationPoint(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseSpecificationPoint(OFVector<Float64> &value) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamDoseSpecificationPoint).getFloat64Vector(value);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamDoseType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamDoseType, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(BeamMeterset, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getBeamMeterset(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, BeamMeterset).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedBeamNumber, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedBeamNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedBeamNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedDoseReferenceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AlternateBeamDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setAlternateBeamDoseType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = AlternateBeamDoseType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDeliveryDurationLimit(const Float64 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return BeamDeliveryDurationLimit.putFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BeamDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDoseSpecificationPoint(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal;
-        if (result.good())
-            result = BeamDoseSpecificationPoint.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamDoseType(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BeamDoseType.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setBeamMeterset(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = BeamMeterset.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedBeamNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedBeamNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedDoseReferenceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::DRTReferencedBeamSequenceInRTFractionSchemeModule(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator=(const DRTReferencedBeamSequenceInRTFractionSchemeModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::~DRTReferencedBeamSequenceInRTFractionSchemeModule()
-{
-    clear();
-}
-
-
-void DRTReferencedBeamSequenceInRTFractionSchemeModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedBeamSequenceInRTFractionSchemeModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedBeamSequenceInRTFractionSchemeModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedBeamSequenceInRTFractionSchemeModule::Item &DRTReferencedBeamSequenceInRTFractionSchemeModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::read(DcmItem &dataset,
-                                                                    const OFString &card,
-                                                                    const OFString &type,
-                                                                    const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedBeamSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedBeamSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedBeamSequenceInRTFractionSchemeModule::write(DcmItem &dataset,
-                                                                     const OFString &card,
-                                                                     const OFString &type,
-                                                                     const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedBeamSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrbss.cc b/dcmrt/libsrc/drtrbss.cc
new file mode 100644 (file)
index 0000000..9542c72
--- /dev/null
@@ -0,0 +1,571 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRecordedBlockSlabSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrbss.h"
+
+
+// --- item class ---
+
+DRTRecordedBlockSlabSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AccessoryCode(DCM_AccessoryCode),
+    BlockSlabNumber(DCM_BlockSlabNumber)
+{
+}
+
+
+DRTRecordedBlockSlabSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AccessoryCode(copy.AccessoryCode),
+    BlockSlabNumber(copy.BlockSlabNumber)
+{
+}
+
+
+DRTRecordedBlockSlabSequence::Item::~Item()
+{
+}
+
+
+DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AccessoryCode = copy.AccessoryCode;
+        BlockSlabNumber = copy.BlockSlabNumber;
+    }
+    return *this;
+}
+
+
+void DRTRecordedBlockSlabSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        BlockSlabNumber.clear();
+        AccessoryCode.clear();
+    }
+}
+
+
+OFBool DRTRecordedBlockSlabSequence::Item::isEmpty()
+{
+    return BlockSlabNumber.isEmpty() &&
+           AccessoryCode.isEmpty();
+}
+
+
+OFBool DRTRecordedBlockSlabSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, BlockSlabNumber, "1", "1", "RecordedBlockSlabSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "RecordedBlockSlabSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUnsignedShort(BlockSlabNumber), "1", "1", "RecordedBlockSlabSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "RecordedBlockSlabSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::Item::getAccessoryCode(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AccessoryCode, value, pos);
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::Item::getBlockSlabNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, BlockSlabNumber).getUint16(value, pos);
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AccessoryCode.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::Item::setBlockSlabNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return BlockSlabNumber.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTRecordedBlockSlabSequence::DRTRecordedBlockSlabSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRecordedBlockSlabSequence::DRTRecordedBlockSlabSequence(const DRTRecordedBlockSlabSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRecordedBlockSlabSequence &DRTRecordedBlockSlabSequence::operator=(const DRTRecordedBlockSlabSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRecordedBlockSlabSequence::~DRTRecordedBlockSlabSequence()
+{
+    clear();
+}
+
+
+void DRTRecordedBlockSlabSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRecordedBlockSlabSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRecordedBlockSlabSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRecordedBlockSlabSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRecordedBlockSlabSequence::Item &DRTRecordedBlockSlabSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::read(DcmItem &dataset,
+                                               const OFString &card,
+                                               const OFString &type,
+                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RecordedBlockSlabSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RecordedBlockSlabSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRecordedBlockSlabSequence::write(DcmItem &dataset,
+                                                const OFString &card,
+                                                const OFString &type,
+                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RecordedBlockSlabSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 1ba0ec0e4889e1e589cd0c25c46e2712722efdc4..1f3341945149607d52974790d29abccab218f00f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -328,10 +328,12 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 60dd5d9ed1fc1db96cf442119392328df797e0f1..6f11065b551206cd3cde29418abf9ec26d0de692 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -310,10 +310,12 @@ OFCondition DRTRecordedCompensatorSequence::gotoFirstItem()
 OFCondition DRTRecordedCompensatorSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 27460802f33ea5031a73b4c48c3c83b0c5bf8739..b7d54133555001b03960f67391305f2e9b6d6920 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -290,10 +290,12 @@ OFCondition DRTReferencedControlPointSequence::gotoFirstItem()
 OFCondition DRTReferencedControlPointSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 80ac010fb5ca375bb8307870f0e9f4cf13489436..5672f7893c3351aba548c09a9e923f76af406b7e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -25,7 +25,8 @@ DRTROIContourSequence::Item::Item(const OFBool emptyDefaultItem)
     ROIDisplayColor(DCM_ROIDisplayColor),
     RecommendedDisplayCIELabValue(DCM_RecommendedDisplayCIELabValue),
     RecommendedDisplayGrayscaleValue(DCM_RecommendedDisplayGrayscaleValue),
-    ReferencedROINumber(DCM_ReferencedROINumber)
+    ReferencedROINumber(DCM_ReferencedROINumber),
+    SourcePixelPlanesCharacteristicsSequence(emptyDefaultItem /*emptyDefaultSequence*/)
 {
 }
 
@@ -36,7 +37,8 @@ DRTROIContourSequence::Item::Item(const Item &copy)
     ROIDisplayColor(copy.ROIDisplayColor),
     RecommendedDisplayCIELabValue(copy.RecommendedDisplayCIELabValue),
     RecommendedDisplayGrayscaleValue(copy.RecommendedDisplayGrayscaleValue),
-    ReferencedROINumber(copy.ReferencedROINumber)
+    ReferencedROINumber(copy.ReferencedROINumber),
+    SourcePixelPlanesCharacteristicsSequence(copy.SourcePixelPlanesCharacteristicsSequence)
 {
 }
 
@@ -56,6 +58,7 @@ DRTROIContourSequence::Item &DRTROIContourSequence::Item::operator=(const Item &
         RecommendedDisplayCIELabValue = copy.RecommendedDisplayCIELabValue;
         RecommendedDisplayGrayscaleValue = copy.RecommendedDisplayGrayscaleValue;
         ReferencedROINumber = copy.ReferencedROINumber;
+        SourcePixelPlanesCharacteristicsSequence = copy.SourcePixelPlanesCharacteristicsSequence;
     }
     return *this;
 }
@@ -70,6 +73,7 @@ void DRTROIContourSequence::Item::clear()
         ROIDisplayColor.clear();
         RecommendedDisplayGrayscaleValue.clear();
         RecommendedDisplayCIELabValue.clear();
+        SourcePixelPlanesCharacteristicsSequence.clear();
         ContourSequence.clear();
     }
 }
@@ -81,6 +85,7 @@ OFBool DRTROIContourSequence::Item::isEmpty()
            ROIDisplayColor.isEmpty() &&
            RecommendedDisplayGrayscaleValue.isEmpty() &&
            RecommendedDisplayCIELabValue.isEmpty() &&
+           SourcePixelPlanesCharacteristicsSequence.isEmpty() &&
            ContourSequence.isEmpty();
 }
 
@@ -102,6 +107,7 @@ OFCondition DRTROIContourSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, ROIDisplayColor, "3", "3", "ROIContourSequence");
         getAndCheckElementFromDataset(item, RecommendedDisplayGrayscaleValue, "1", "3", "ROIContourSequence");
         getAndCheckElementFromDataset(item, RecommendedDisplayCIELabValue, "3", "3", "ROIContourSequence");
+        SourcePixelPlanesCharacteristicsSequence.read(item, "1-n", "3", "ROIContourSequence");
         ContourSequence.read(item, "1-n", "3", "ROIContourSequence");
         result = EC_Normal;
     }
@@ -119,6 +125,7 @@ OFCondition DRTROIContourSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmIntegerString(ROIDisplayColor), "3", "3", "ROIContourSequence");
         addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayGrayscaleValue), "1", "3", "ROIContourSequence");
         addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayCIELabValue), "3", "3", "ROIContourSequence");
+        if (result.good()) result = SourcePixelPlanesCharacteristicsSequence.write(item, "1-n", "3", "ROIContourSequence");
         if (result.good()) result = ContourSequence.write(item, "1-n", "3", "ROIContourSequence");
     }
     return result;
@@ -347,10 +354,12 @@ OFCondition DRTROIContourSequence::gotoFirstItem()
 OFCondition DRTROIContourSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrdais.cc b/dcmrt/libsrc/drtrdais.cc
new file mode 100644 (file)
index 0000000..ae1c273
--- /dev/null
@@ -0,0 +1,647 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTROIDerivationAlgorithmIdentificationSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrdais.h"
+
+
+// --- item class ---
+
+DRTROIDerivationAlgorithmIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    AlgorithmFamilyCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    AlgorithmName(DCM_AlgorithmName),
+    AlgorithmNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    AlgorithmParameters(DCM_AlgorithmParameters),
+    AlgorithmSource(DCM_AlgorithmSource),
+    AlgorithmVersion(DCM_AlgorithmVersion)
+{
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AlgorithmFamilyCodeSequence(copy.AlgorithmFamilyCodeSequence),
+    AlgorithmName(copy.AlgorithmName),
+    AlgorithmNameCodeSequence(copy.AlgorithmNameCodeSequence),
+    AlgorithmParameters(copy.AlgorithmParameters),
+    AlgorithmSource(copy.AlgorithmSource),
+    AlgorithmVersion(copy.AlgorithmVersion)
+{
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::Item::~Item()
+{
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        AlgorithmFamilyCodeSequence = copy.AlgorithmFamilyCodeSequence;
+        AlgorithmName = copy.AlgorithmName;
+        AlgorithmNameCodeSequence = copy.AlgorithmNameCodeSequence;
+        AlgorithmParameters = copy.AlgorithmParameters;
+        AlgorithmSource = copy.AlgorithmSource;
+        AlgorithmVersion = copy.AlgorithmVersion;
+    }
+    return *this;
+}
+
+
+void DRTROIDerivationAlgorithmIdentificationSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        AlgorithmFamilyCodeSequence.clear();
+        AlgorithmNameCodeSequence.clear();
+        AlgorithmName.clear();
+        AlgorithmVersion.clear();
+        AlgorithmParameters.clear();
+        AlgorithmSource.clear();
+    }
+}
+
+
+OFBool DRTROIDerivationAlgorithmIdentificationSequence::Item::isEmpty()
+{
+    return AlgorithmFamilyCodeSequence.isEmpty() &&
+           AlgorithmNameCodeSequence.isEmpty() &&
+           AlgorithmName.isEmpty() &&
+           AlgorithmVersion.isEmpty() &&
+           AlgorithmParameters.isEmpty() &&
+           AlgorithmSource.isEmpty();
+}
+
+
+OFBool DRTROIDerivationAlgorithmIdentificationSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        AlgorithmFamilyCodeSequence.read(item, "1-n", "1", "ROIDerivationAlgorithmIdentificationSequence");
+        AlgorithmNameCodeSequence.read(item, "1-n", "3", "ROIDerivationAlgorithmIdentificationSequence");
+        getAndCheckElementFromDataset(item, AlgorithmName, "1", "1", "ROIDerivationAlgorithmIdentificationSequence");
+        getAndCheckElementFromDataset(item, AlgorithmVersion, "1", "1", "ROIDerivationAlgorithmIdentificationSequence");
+        getAndCheckElementFromDataset(item, AlgorithmParameters, "1", "3", "ROIDerivationAlgorithmIdentificationSequence");
+        getAndCheckElementFromDataset(item, AlgorithmSource, "1", "3", "ROIDerivationAlgorithmIdentificationSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        if (result.good()) result = AlgorithmFamilyCodeSequence.write(item, "1-n", "1", "ROIDerivationAlgorithmIdentificationSequence");
+        if (result.good()) result = AlgorithmNameCodeSequence.write(item, "1-n", "3", "ROIDerivationAlgorithmIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(AlgorithmName), "1", "1", "ROIDerivationAlgorithmIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(AlgorithmVersion), "1", "1", "ROIDerivationAlgorithmIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(AlgorithmParameters), "1", "3", "ROIDerivationAlgorithmIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(AlgorithmSource), "1", "3", "ROIDerivationAlgorithmIdentificationSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmName, value, pos);
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmParameters(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmParameters, value, pos);
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmSource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmSource, value, pos);
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::getAlgorithmVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(AlgorithmVersion, value, pos);
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlgorithmName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmParameters(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = AlgorithmParameters.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmSource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlgorithmSource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::Item::setAlgorithmVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = AlgorithmVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTROIDerivationAlgorithmIdentificationSequence::DRTROIDerivationAlgorithmIdentificationSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::DRTROIDerivationAlgorithmIdentificationSequence(const DRTROIDerivationAlgorithmIdentificationSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence &DRTROIDerivationAlgorithmIdentificationSequence::operator=(const DRTROIDerivationAlgorithmIdentificationSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::~DRTROIDerivationAlgorithmIdentificationSequence()
+{
+    clear();
+}
+
+
+void DRTROIDerivationAlgorithmIdentificationSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTROIDerivationAlgorithmIdentificationSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTROIDerivationAlgorithmIdentificationSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTROIDerivationAlgorithmIdentificationSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTROIDerivationAlgorithmIdentificationSequence::Item &DRTROIDerivationAlgorithmIdentificationSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::read(DcmItem &dataset,
+                                                                  const OFString &card,
+                                                                  const OFString &type,
+                                                                  const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ROIDerivationAlgorithmIdentificationSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ROIDerivationAlgorithmIdentificationSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTROIDerivationAlgorithmIdentificationSequence::write(DcmItem &dataset,
+                                                                   const OFString &card,
+                                                                   const OFString &type,
+                                                                   const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ROIDerivationAlgorithmIdentificationSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrdcks.cc b/dcmrt/libsrc/drtrdcks.cc
new file mode 100644 (file)
index 0000000..c9b8c1b
--- /dev/null
@@ -0,0 +1,928 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRadiationDeviceConfigurationAndCommissioningKeySequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrdcks.h"
+
+
+// --- item class ---
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ConceptCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ConceptNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    Date(DCM_Date),
+    DateTime(DCM_DateTime),
+    FloatingPointValue(DCM_FloatingPointValue),
+    MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    NumericValue(DCM_NumericValue),
+    ObservationDateTime(DCM_ObservationDateTime),
+    ObservationStartDateTime(DCM_ObservationStartDateTime),
+    PersonName(DCM_PersonName),
+    RationalDenominatorValue(DCM_RationalDenominatorValue),
+    RationalNumeratorValue(DCM_RationalNumeratorValue),
+    ReferencedSOPSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    TextValue(DCM_TextValue),
+    Time(DCM_Time),
+    UID(DCM_UID),
+    ValueType(DCM_ValueType)
+{
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ConceptCodeSequence(copy.ConceptCodeSequence),
+    ConceptNameCodeSequence(copy.ConceptNameCodeSequence),
+    Date(copy.Date),
+    DateTime(copy.DateTime),
+    FloatingPointValue(copy.FloatingPointValue),
+    MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
+    NumericValue(copy.NumericValue),
+    ObservationDateTime(copy.ObservationDateTime),
+    ObservationStartDateTime(copy.ObservationStartDateTime),
+    PersonName(copy.PersonName),
+    RationalDenominatorValue(copy.RationalDenominatorValue),
+    RationalNumeratorValue(copy.RationalNumeratorValue),
+    ReferencedSOPSequence(copy.ReferencedSOPSequence),
+    TextValue(copy.TextValue),
+    Time(copy.Time),
+    UID(copy.UID),
+    ValueType(copy.ValueType)
+{
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::~Item()
+{
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ConceptCodeSequence = copy.ConceptCodeSequence;
+        ConceptNameCodeSequence = copy.ConceptNameCodeSequence;
+        Date = copy.Date;
+        DateTime = copy.DateTime;
+        FloatingPointValue = copy.FloatingPointValue;
+        MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
+        NumericValue = copy.NumericValue;
+        ObservationDateTime = copy.ObservationDateTime;
+        ObservationStartDateTime = copy.ObservationStartDateTime;
+        PersonName = copy.PersonName;
+        RationalDenominatorValue = copy.RationalDenominatorValue;
+        RationalNumeratorValue = copy.RationalNumeratorValue;
+        ReferencedSOPSequence = copy.ReferencedSOPSequence;
+        TextValue = copy.TextValue;
+        Time = copy.Time;
+        UID = copy.UID;
+        ValueType = copy.ValueType;
+    }
+    return *this;
+}
+
+
+void DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ValueType.clear();
+        ObservationDateTime.clear();
+        ObservationStartDateTime.clear();
+        ConceptNameCodeSequence.clear();
+        DateTime.clear();
+        Date.clear();
+        Time.clear();
+        PersonName.clear();
+        UID.clear();
+        TextValue.clear();
+        ConceptCodeSequence.clear();
+        NumericValue.clear();
+        FloatingPointValue.clear();
+        RationalNumeratorValue.clear();
+        RationalDenominatorValue.clear();
+        MeasurementUnitsCodeSequence.clear();
+        ReferencedSOPSequence.clear();
+    }
+}
+
+
+OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::isEmpty()
+{
+    return ValueType.isEmpty() &&
+           ObservationDateTime.isEmpty() &&
+           ObservationStartDateTime.isEmpty() &&
+           ConceptNameCodeSequence.isEmpty() &&
+           DateTime.isEmpty() &&
+           Date.isEmpty() &&
+           Time.isEmpty() &&
+           PersonName.isEmpty() &&
+           UID.isEmpty() &&
+           TextValue.isEmpty() &&
+           ConceptCodeSequence.isEmpty() &&
+           NumericValue.isEmpty() &&
+           FloatingPointValue.isEmpty() &&
+           RationalNumeratorValue.isEmpty() &&
+           RationalDenominatorValue.isEmpty() &&
+           MeasurementUnitsCodeSequence.isEmpty() &&
+           ReferencedSOPSequence.isEmpty();
+}
+
+
+OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ValueType, "1", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, ObservationDateTime, "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, ObservationStartDateTime, "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        ConceptNameCodeSequence.read(item, "1-n", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, DateTime, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, Date, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, Time, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, PersonName, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, UID, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, TextValue, "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        ConceptCodeSequence.read(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, NumericValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, FloatingPointValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, RationalNumeratorValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        getAndCheckElementFromDataset(item, RationalDenominatorValue, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        MeasurementUnitsCodeSequence.read(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        ReferencedSOPSequence.read(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmDateTime(ObservationDateTime), "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmDateTime(ObservationStartDateTime), "1", "3", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmTime(Time), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmPersonName(PersonName), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(UID), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmUnlimitedText(TextValue), "1", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        if (result.good()) result = ConceptCodeSequence.write(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmDecimalString(NumericValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(FloatingPointValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmSignedLong(RationalNumeratorValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        addElementToDataset(result, item, new DcmUnsignedLong(RationalDenominatorValue), "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+        if (result.good()) result = ReferencedSOPSequence.write(item, "1-n", "1C", "RadiationDeviceConfigurationAndCommissioningKeySequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getDate(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(Date, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DateTime, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getFloatingPointValue(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointDouble &, FloatingPointValue).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getNumericValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(NumericValue, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getNumericValue(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, NumericValue).getFloat64(value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getNumericValue(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, NumericValue).getFloat64Vector(value);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getObservationDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ObservationDateTime, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getObservationStartDateTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ObservationStartDateTime, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getPersonName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonName, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getRationalDenominatorValue(Uint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedLong &, RationalDenominatorValue).getUint32(value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getRationalNumeratorValue(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmSignedLong &, RationalNumeratorValue).getSint32(value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getTextValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TextValue, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getTime(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(Time, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(UID, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::getValueType(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ValueType, value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setDate(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = Date.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setFloatingPointValue(const Float64 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return FloatingPointValue.putFloat64(value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setNumericValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1-n") : EC_Normal;
+        if (result.good())
+            result = NumericValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setObservationDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ObservationDateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setObservationStartDateTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ObservationStartDateTime.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setPersonName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = PersonName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setRationalDenominatorValue(const Uint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RationalDenominatorValue.putUint32(value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setRationalNumeratorValue(const Sint32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RationalNumeratorValue.putSint32(value, pos);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setTextValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = TextValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setTime(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = Time.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = UID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item::setValueType(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ValueType.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::DRTRadiationDeviceConfigurationAndCommissioningKeySequence(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::operator=(const DRTRadiationDeviceConfigurationAndCommissioningKeySequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::~DRTRadiationDeviceConfigurationAndCommissioningKeySequence()
+{
+    clear();
+}
+
+
+void DRTRadiationDeviceConfigurationAndCommissioningKeySequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRadiationDeviceConfigurationAndCommissioningKeySequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRadiationDeviceConfigurationAndCommissioningKeySequence::Item &DRTRadiationDeviceConfigurationAndCommissioningKeySequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::read(DcmItem &dataset,
+                                                                             const OFString &card,
+                                                                             const OFString &type,
+                                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RadiationDeviceConfigurationAndCommissioningKeySequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RadiationDeviceConfigurationAndCommissioningKeySequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRadiationDeviceConfigurationAndCommissioningKeySequence::write(DcmItem &dataset,
+                                                                              const OFString &card,
+                                                                              const OFString &type,
+                                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RadiationDeviceConfigurationAndCommissioningKeySequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrdps.cc b/dcmrt/libsrc/drtrdps.cc
new file mode 100644 (file)
index 0000000..164b58a
--- /dev/null
@@ -0,0 +1,625 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedDefinedProtocolSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrdps.h"
+
+
+// --- item class ---
+
+DRTReferencedDefinedProtocolSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID),
+    SourceAcquisitionProtocolElementNumber(DCM_SourceAcquisitionProtocolElementNumber),
+    SourceReconstructionProtocolElementNumber(DCM_SourceReconstructionProtocolElementNumber)
+{
+}
+
+
+DRTReferencedDefinedProtocolSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID),
+    SourceAcquisitionProtocolElementNumber(copy.SourceAcquisitionProtocolElementNumber),
+    SourceReconstructionProtocolElementNumber(copy.SourceReconstructionProtocolElementNumber)
+{
+}
+
+
+DRTReferencedDefinedProtocolSequence::Item::~Item()
+{
+}
+
+
+DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+        SourceAcquisitionProtocolElementNumber = copy.SourceAcquisitionProtocolElementNumber;
+        SourceReconstructionProtocolElementNumber = copy.SourceReconstructionProtocolElementNumber;
+    }
+    return *this;
+}
+
+
+void DRTReferencedDefinedProtocolSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+        SourceAcquisitionProtocolElementNumber.clear();
+        SourceReconstructionProtocolElementNumber.clear();
+    }
+}
+
+
+OFBool DRTReferencedDefinedProtocolSequence::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty() &&
+           SourceAcquisitionProtocolElementNumber.isEmpty() &&
+           SourceReconstructionProtocolElementNumber.isEmpty();
+}
+
+
+OFBool DRTReferencedDefinedProtocolSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedDefinedProtocolSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedDefinedProtocolSequence");
+        getAndCheckElementFromDataset(item, SourceAcquisitionProtocolElementNumber, "1-n", "3", "ReferencedDefinedProtocolSequence");
+        getAndCheckElementFromDataset(item, SourceReconstructionProtocolElementNumber, "1-n", "3", "ReferencedDefinedProtocolSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedDefinedProtocolSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedDefinedProtocolSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(SourceAcquisitionProtocolElementNumber), "1-n", "3", "ReferencedDefinedProtocolSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(SourceReconstructionProtocolElementNumber), "1-n", "3", "ReferencedDefinedProtocolSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, SourceAcquisitionProtocolElementNumber).getUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, SourceReconstructionProtocolElementNumber).getUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceAcquisitionProtocolElementNumber.putUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::Item::setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceReconstructionProtocolElementNumber.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTReferencedDefinedProtocolSequence::DRTReferencedDefinedProtocolSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedDefinedProtocolSequence::DRTReferencedDefinedProtocolSequence(const DRTReferencedDefinedProtocolSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedDefinedProtocolSequence &DRTReferencedDefinedProtocolSequence::operator=(const DRTReferencedDefinedProtocolSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedDefinedProtocolSequence::~DRTReferencedDefinedProtocolSequence()
+{
+    clear();
+}
+
+
+void DRTReferencedDefinedProtocolSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedDefinedProtocolSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedDefinedProtocolSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedDefinedProtocolSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedDefinedProtocolSequence::Item &DRTReferencedDefinedProtocolSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::read(DcmItem &dataset,
+                                                       const OFString &card,
+                                                       const OFString &type,
+                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedDefinedProtocolSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedDefinedProtocolSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDefinedProtocolSequence::write(DcmItem &dataset,
+                                                        const OFString &card,
+                                                        const OFString &type,
+                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDefinedProtocolSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrdros.cc b/dcmrt/libsrc/drtrdros.cc
deleted file mode 100644 (file)
index 34a99d9..0000000
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTRTDoseROISequence
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrdros.h"
-
-
-// --- item class ---
-
-DRTRTDoseROISequence::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    DoseUnits(DCM_DoseUnits),
-    DoseValue(DCM_DoseValue),
-    ReferencedROINumber(DCM_ReferencedROINumber)
-{
-}
-
-
-DRTRTDoseROISequence::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    DoseUnits(copy.DoseUnits),
-    DoseValue(copy.DoseValue),
-    ReferencedROINumber(copy.ReferencedROINumber)
-{
-}
-
-
-DRTRTDoseROISequence::Item::~Item()
-{
-}
-
-
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        DoseUnits = copy.DoseUnits;
-        DoseValue = copy.DoseValue;
-        ReferencedROINumber = copy.ReferencedROINumber;
-    }
-    return *this;
-}
-
-
-void DRTRTDoseROISequence::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedROINumber.clear();
-        DoseUnits.clear();
-        DoseValue.clear();
-    }
-}
-
-
-OFBool DRTRTDoseROISequence::Item::isEmpty()
-{
-    return ReferencedROINumber.isEmpty() &&
-           DoseUnits.isEmpty() &&
-           DoseValue.isEmpty();
-}
-
-
-OFBool DRTRTDoseROISequence::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "RTDoseROISequence");
-        getAndCheckElementFromDataset(item, DoseUnits, "1", "1", "RTDoseROISequence");
-        getAndCheckElementFromDataset(item, DoseValue, "1", "1", "RTDoseROISequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "RTDoseROISequence");
-        addElementToDataset(result, item, new DcmCodeString(DoseUnits), "1", "1", "RTDoseROISequence");
-        addElementToDataset(result, item, new DcmDecimalString(DoseValue), "1", "1", "RTDoseROISequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::getDoseUnits(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(DoseUnits, value, pos);
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::getDoseValue(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(DoseValue, value, pos);
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::getDoseValue(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, DoseValue).getFloat64(value, pos);
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedROINumber, value, pos);
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::setDoseUnits(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = DoseUnits.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::setDoseValue(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = DoseValue.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::setReferencedROINumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedROINumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTRTDoseROISequence::DRTRTDoseROISequence(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTRTDoseROISequence::DRTRTDoseROISequence(const DRTRTDoseROISequence &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTRTDoseROISequence &DRTRTDoseROISequence::operator=(const DRTRTDoseROISequence &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTRTDoseROISequence::~DRTRTDoseROISequence()
-{
-    clear();
-}
-
-
-void DRTRTDoseROISequence::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTRTDoseROISequence::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTRTDoseROISequence::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTRTDoseROISequence::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTRTDoseROISequence::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTRTDoseROISequence::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTRTDoseROISequence::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTRTDoseROISequence::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::read(DcmItem &dataset,
-                                       const OFString &card,
-                                       const OFString &type,
-                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RTDoseROISequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_RTDoseROISequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTRTDoseROISequence::write(DcmItem &dataset,
-                                        const OFString &card,
-                                        const OFString &type,
-                                        const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTDoseROISequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 8d5e31814a9d6e687a0c936062851cb78e9d8820..5c0034f752e33d0d3bd5c2a65c0a8507d477378f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -288,10 +288,12 @@ OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoFirstItem()
 OFCondition DRTReferencedDoseReferenceSequenceInRTBeamsModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrdrs2.cc b/dcmrt/libsrc/drtrdrs2.cc
new file mode 100644 (file)
index 0000000..ce10ed8
--- /dev/null
@@ -0,0 +1,593 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrdrs2.h"
+
+
+// --- item class ---
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CumulativeDoseReferenceCoefficient(DCM_CumulativeDoseReferenceCoefficient),
+    ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber)
+{
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CumulativeDoseReferenceCoefficient(copy.CumulativeDoseReferenceCoefficient),
+    ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber)
+{
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CumulativeDoseReferenceCoefficient = copy.CumulativeDoseReferenceCoefficient;
+        ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber;
+    }
+    return *this;
+}
+
+
+void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedDoseReferenceNumber.clear();
+        CumulativeDoseReferenceCoefficient.clear();
+    }
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return ReferencedDoseReferenceNumber.isEmpty() &&
+           CumulativeDoseReferenceCoefficient.isEmpty();
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, CumulativeDoseReferenceCoefficient, "1", "2", "ReferencedDoseReferenceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(CumulativeDoseReferenceCoefficient), "1", "2", "ReferencedDoseReferenceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CumulativeDoseReferenceCoefficient, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, CumulativeDoseReferenceCoefficient).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CumulativeDoseReferenceCoefficient.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedDoseReferenceNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                                       const OFString &card,
+                                                                       const OFString &type,
+                                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                                        const OFString &card,
+                                                                        const OFString &type,
+                                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrdrs3.cc b/dcmrt/libsrc/drtrdrs3.cc
new file mode 100644 (file)
index 0000000..bf3b718
--- /dev/null
@@ -0,0 +1,973 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrdrs3.h"
+
+
+// --- item class ---
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ConstraintWeight(DCM_ConstraintWeight),
+    DeliveryMaximumDose(DCM_DeliveryMaximumDose),
+    DeliveryWarningDose(DCM_DeliveryWarningDose),
+    OrganAtRiskFullVolumeDose(DCM_OrganAtRiskFullVolumeDose),
+    OrganAtRiskLimitDose(DCM_OrganAtRiskLimitDose),
+    OrganAtRiskMaximumDose(DCM_OrganAtRiskMaximumDose),
+    OrganAtRiskOverdoseVolumeFraction(DCM_OrganAtRiskOverdoseVolumeFraction),
+    ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber),
+    TargetMaximumDose(DCM_TargetMaximumDose),
+    TargetMinimumDose(DCM_TargetMinimumDose),
+    TargetPrescriptionDose(DCM_TargetPrescriptionDose),
+    TargetUnderdoseVolumeFraction(DCM_TargetUnderdoseVolumeFraction)
+{
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ConstraintWeight(copy.ConstraintWeight),
+    DeliveryMaximumDose(copy.DeliveryMaximumDose),
+    DeliveryWarningDose(copy.DeliveryWarningDose),
+    OrganAtRiskFullVolumeDose(copy.OrganAtRiskFullVolumeDose),
+    OrganAtRiskLimitDose(copy.OrganAtRiskLimitDose),
+    OrganAtRiskMaximumDose(copy.OrganAtRiskMaximumDose),
+    OrganAtRiskOverdoseVolumeFraction(copy.OrganAtRiskOverdoseVolumeFraction),
+    ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber),
+    TargetMaximumDose(copy.TargetMaximumDose),
+    TargetMinimumDose(copy.TargetMinimumDose),
+    TargetPrescriptionDose(copy.TargetPrescriptionDose),
+    TargetUnderdoseVolumeFraction(copy.TargetUnderdoseVolumeFraction)
+{
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::~Item()
+{
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ConstraintWeight = copy.ConstraintWeight;
+        DeliveryMaximumDose = copy.DeliveryMaximumDose;
+        DeliveryWarningDose = copy.DeliveryWarningDose;
+        OrganAtRiskFullVolumeDose = copy.OrganAtRiskFullVolumeDose;
+        OrganAtRiskLimitDose = copy.OrganAtRiskLimitDose;
+        OrganAtRiskMaximumDose = copy.OrganAtRiskMaximumDose;
+        OrganAtRiskOverdoseVolumeFraction = copy.OrganAtRiskOverdoseVolumeFraction;
+        ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber;
+        TargetMaximumDose = copy.TargetMaximumDose;
+        TargetMinimumDose = copy.TargetMinimumDose;
+        TargetPrescriptionDose = copy.TargetPrescriptionDose;
+        TargetUnderdoseVolumeFraction = copy.TargetUnderdoseVolumeFraction;
+    }
+    return *this;
+}
+
+
+void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedDoseReferenceNumber.clear();
+        ConstraintWeight.clear();
+        DeliveryWarningDose.clear();
+        DeliveryMaximumDose.clear();
+        TargetMinimumDose.clear();
+        TargetPrescriptionDose.clear();
+        TargetMaximumDose.clear();
+        TargetUnderdoseVolumeFraction.clear();
+        OrganAtRiskFullVolumeDose.clear();
+        OrganAtRiskLimitDose.clear();
+        OrganAtRiskMaximumDose.clear();
+        OrganAtRiskOverdoseVolumeFraction.clear();
+    }
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isEmpty()
+{
+    return ReferencedDoseReferenceNumber.isEmpty() &&
+           ConstraintWeight.isEmpty() &&
+           DeliveryWarningDose.isEmpty() &&
+           DeliveryMaximumDose.isEmpty() &&
+           TargetMinimumDose.isEmpty() &&
+           TargetPrescriptionDose.isEmpty() &&
+           TargetMaximumDose.isEmpty() &&
+           TargetUnderdoseVolumeFraction.isEmpty() &&
+           OrganAtRiskFullVolumeDose.isEmpty() &&
+           OrganAtRiskLimitDose.isEmpty() &&
+           OrganAtRiskMaximumDose.isEmpty() &&
+           OrganAtRiskOverdoseVolumeFraction.isEmpty();
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, ConstraintWeight, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, DeliveryWarningDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, DeliveryMaximumDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, TargetMinimumDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, TargetPrescriptionDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, TargetMaximumDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, TargetUnderdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, OrganAtRiskFullVolumeDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, OrganAtRiskLimitDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, OrganAtRiskMaximumDose, "1", "3", "ReferencedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, OrganAtRiskOverdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(ConstraintWeight), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(DeliveryWarningDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(DeliveryMaximumDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(TargetMinimumDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(TargetPrescriptionDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(TargetMaximumDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(TargetUnderdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskFullVolumeDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskLimitDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskMaximumDose), "1", "3", "ReferencedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskOverdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ConstraintWeight, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ConstraintWeight).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeliveryMaximumDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, DeliveryMaximumDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeliveryWarningDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, DeliveryWarningDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(OrganAtRiskFullVolumeDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, OrganAtRiskFullVolumeDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(OrganAtRiskLimitDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, OrganAtRiskLimitDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(OrganAtRiskMaximumDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, OrganAtRiskMaximumDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(OrganAtRiskOverdoseVolumeFraction, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, OrganAtRiskOverdoseVolumeFraction).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TargetMaximumDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, TargetMaximumDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TargetMinimumDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, TargetMinimumDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TargetPrescriptionDose, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, TargetPrescriptionDose).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TargetUnderdoseVolumeFraction, value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, TargetUnderdoseVolumeFraction).getFloat64(value, pos);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setConstraintWeight(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ConstraintWeight.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryMaximumDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeliveryMaximumDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryWarningDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeliveryWarningDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = OrganAtRiskFullVolumeDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskLimitDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = OrganAtRiskLimitDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskMaximumDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = OrganAtRiskMaximumDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = OrganAtRiskOverdoseVolumeFraction.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedDoseReferenceNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMaximumDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TargetMaximumDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMinimumDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TargetMinimumDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetPrescriptionDose(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TargetPrescriptionDose.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TargetUnderdoseVolumeFraction.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule()
+{
+    clear();
+}
+
+
+void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::read(DcmItem &dataset,
+                                                                             const OFString &card,
+                                                                             const OFString &type,
+                                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::write(DcmItem &dataset,
+                                                                              const OFString &card,
+                                                                              const OFString &type,
+                                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrdrs6.cc b/dcmrt/libsrc/drtrdrs6.cc
deleted file mode 100644 (file)
index 0904f47..0000000
+++ /dev/null
@@ -1,591 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrdrs6.h"
-
-
-// --- item class ---
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    CumulativeDoseReferenceCoefficient(DCM_CumulativeDoseReferenceCoefficient),
-    ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber)
-{
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    CumulativeDoseReferenceCoefficient(copy.CumulativeDoseReferenceCoefficient),
-    ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber)
-{
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        CumulativeDoseReferenceCoefficient = copy.CumulativeDoseReferenceCoefficient;
-        ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber;
-    }
-    return *this;
-}
-
-
-void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedDoseReferenceNumber.clear();
-        CumulativeDoseReferenceCoefficient.clear();
-    }
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return ReferencedDoseReferenceNumber.isEmpty() &&
-           CumulativeDoseReferenceCoefficient.isEmpty();
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, CumulativeDoseReferenceCoefficient, "1", "2", "ReferencedDoseReferenceSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(CumulativeDoseReferenceCoefficient), "1", "2", "ReferencedDoseReferenceSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(CumulativeDoseReferenceCoefficient, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getCumulativeDoseReferenceCoefficient(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, CumulativeDoseReferenceCoefficient).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setCumulativeDoseReferenceCoefficient(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = CumulativeDoseReferenceCoefficient.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedDoseReferenceNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::DRTReferencedDoseReferenceSequenceInRTIonBeamsModule(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator=(const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::~DRTReferencedDoseReferenceSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::Item &DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                                       const OFString &card,
-                                                                       const OFString &type,
-                                                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                                        const OFString &card,
-                                                                        const OFString &type,
-                                                                        const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrdrs8.cc b/dcmrt/libsrc/drtrdrs8.cc
deleted file mode 100644 (file)
index 7b7cba1..0000000
+++ /dev/null
@@ -1,971 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrdrs8.h"
-
-
-// --- item class ---
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    ConstraintWeight(DCM_ConstraintWeight),
-    DeliveryMaximumDose(DCM_DeliveryMaximumDose),
-    DeliveryWarningDose(DCM_DeliveryWarningDose),
-    OrganAtRiskFullVolumeDose(DCM_OrganAtRiskFullVolumeDose),
-    OrganAtRiskLimitDose(DCM_OrganAtRiskLimitDose),
-    OrganAtRiskMaximumDose(DCM_OrganAtRiskMaximumDose),
-    OrganAtRiskOverdoseVolumeFraction(DCM_OrganAtRiskOverdoseVolumeFraction),
-    ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber),
-    TargetMaximumDose(DCM_TargetMaximumDose),
-    TargetMinimumDose(DCM_TargetMinimumDose),
-    TargetPrescriptionDose(DCM_TargetPrescriptionDose),
-    TargetUnderdoseVolumeFraction(DCM_TargetUnderdoseVolumeFraction)
-{
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ConstraintWeight(copy.ConstraintWeight),
-    DeliveryMaximumDose(copy.DeliveryMaximumDose),
-    DeliveryWarningDose(copy.DeliveryWarningDose),
-    OrganAtRiskFullVolumeDose(copy.OrganAtRiskFullVolumeDose),
-    OrganAtRiskLimitDose(copy.OrganAtRiskLimitDose),
-    OrganAtRiskMaximumDose(copy.OrganAtRiskMaximumDose),
-    OrganAtRiskOverdoseVolumeFraction(copy.OrganAtRiskOverdoseVolumeFraction),
-    ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber),
-    TargetMaximumDose(copy.TargetMaximumDose),
-    TargetMinimumDose(copy.TargetMinimumDose),
-    TargetPrescriptionDose(copy.TargetPrescriptionDose),
-    TargetUnderdoseVolumeFraction(copy.TargetUnderdoseVolumeFraction)
-{
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::~Item()
-{
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        ConstraintWeight = copy.ConstraintWeight;
-        DeliveryMaximumDose = copy.DeliveryMaximumDose;
-        DeliveryWarningDose = copy.DeliveryWarningDose;
-        OrganAtRiskFullVolumeDose = copy.OrganAtRiskFullVolumeDose;
-        OrganAtRiskLimitDose = copy.OrganAtRiskLimitDose;
-        OrganAtRiskMaximumDose = copy.OrganAtRiskMaximumDose;
-        OrganAtRiskOverdoseVolumeFraction = copy.OrganAtRiskOverdoseVolumeFraction;
-        ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber;
-        TargetMaximumDose = copy.TargetMaximumDose;
-        TargetMinimumDose = copy.TargetMinimumDose;
-        TargetPrescriptionDose = copy.TargetPrescriptionDose;
-        TargetUnderdoseVolumeFraction = copy.TargetUnderdoseVolumeFraction;
-    }
-    return *this;
-}
-
-
-void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedDoseReferenceNumber.clear();
-        ConstraintWeight.clear();
-        DeliveryWarningDose.clear();
-        DeliveryMaximumDose.clear();
-        TargetMinimumDose.clear();
-        TargetPrescriptionDose.clear();
-        TargetMaximumDose.clear();
-        TargetUnderdoseVolumeFraction.clear();
-        OrganAtRiskFullVolumeDose.clear();
-        OrganAtRiskLimitDose.clear();
-        OrganAtRiskMaximumDose.clear();
-        OrganAtRiskOverdoseVolumeFraction.clear();
-    }
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isEmpty()
-{
-    return ReferencedDoseReferenceNumber.isEmpty() &&
-           ConstraintWeight.isEmpty() &&
-           DeliveryWarningDose.isEmpty() &&
-           DeliveryMaximumDose.isEmpty() &&
-           TargetMinimumDose.isEmpty() &&
-           TargetPrescriptionDose.isEmpty() &&
-           TargetMaximumDose.isEmpty() &&
-           TargetUnderdoseVolumeFraction.isEmpty() &&
-           OrganAtRiskFullVolumeDose.isEmpty() &&
-           OrganAtRiskLimitDose.isEmpty() &&
-           OrganAtRiskMaximumDose.isEmpty() &&
-           OrganAtRiskOverdoseVolumeFraction.isEmpty();
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, ConstraintWeight, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, DeliveryWarningDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, DeliveryMaximumDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, TargetMinimumDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, TargetPrescriptionDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, TargetMaximumDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, TargetUnderdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, OrganAtRiskFullVolumeDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, OrganAtRiskLimitDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, OrganAtRiskMaximumDose, "1", "3", "ReferencedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, OrganAtRiskOverdoseVolumeFraction, "1", "3", "ReferencedDoseReferenceSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(ConstraintWeight), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(DeliveryWarningDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(DeliveryMaximumDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(TargetMinimumDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(TargetPrescriptionDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(TargetMaximumDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(TargetUnderdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskFullVolumeDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskLimitDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskMaximumDose), "1", "3", "ReferencedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(OrganAtRiskOverdoseVolumeFraction), "1", "3", "ReferencedDoseReferenceSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ConstraintWeight, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getConstraintWeight(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, ConstraintWeight).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(DeliveryMaximumDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryMaximumDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, DeliveryMaximumDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(DeliveryWarningDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getDeliveryWarningDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, DeliveryWarningDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(OrganAtRiskFullVolumeDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskFullVolumeDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, OrganAtRiskFullVolumeDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(OrganAtRiskLimitDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskLimitDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, OrganAtRiskLimitDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(OrganAtRiskMaximumDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskMaximumDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, OrganAtRiskMaximumDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(OrganAtRiskOverdoseVolumeFraction, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getOrganAtRiskOverdoseVolumeFraction(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, OrganAtRiskOverdoseVolumeFraction).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TargetMaximumDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMaximumDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, TargetMaximumDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TargetMinimumDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetMinimumDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, TargetMinimumDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TargetPrescriptionDose, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetPrescriptionDose(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, TargetPrescriptionDose).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TargetUnderdoseVolumeFraction, value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::getTargetUnderdoseVolumeFraction(Float64 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmDecimalString &, TargetUnderdoseVolumeFraction).getFloat64(value, pos);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setConstraintWeight(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ConstraintWeight.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryMaximumDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = DeliveryMaximumDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setDeliveryWarningDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = DeliveryWarningDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskFullVolumeDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = OrganAtRiskFullVolumeDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskLimitDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = OrganAtRiskLimitDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskMaximumDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = OrganAtRiskMaximumDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setOrganAtRiskOverdoseVolumeFraction(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = OrganAtRiskOverdoseVolumeFraction.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedDoseReferenceNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMaximumDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TargetMaximumDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetMinimumDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TargetMinimumDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetPrescriptionDose(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TargetPrescriptionDose.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item::setTargetUnderdoseVolumeFraction(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TargetUnderdoseVolumeFraction.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator=(const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::~DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule()
-{
-    clear();
-}
-
-
-void DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::Item &DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::read(DcmItem &dataset,
-                                                                             const OFString &card,
-                                                                             const OFString &type,
-                                                                             const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedDoseReferenceSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedDoseReferenceSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule::write(DcmItem &dataset,
-                                                                              const OFString &card,
-                                                                              const OFString &type,
-                                                                              const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDoseReferenceSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 2fcb68bd5b4f941a2999db13e97c415789a7d69b..85c040c169e299ddbd6a38e3df3993f9034ea3ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTReferencedDoseSequence::gotoFirstItem()
 OFCondition DRTReferencedDoseSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrdsis.cc b/dcmrt/libsrc/drtrdsis.cc
new file mode 100644 (file)
index 0000000..c4269f9
--- /dev/null
@@ -0,0 +1,575 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedDirectSegmentInstanceSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrdsis.h"
+
+
+// --- item class ---
+
+DRTReferencedDirectSegmentInstanceSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::Item::~Item()
+{
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedDirectSegmentInstanceSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+    }
+}
+
+
+OFBool DRTReferencedDirectSegmentInstanceSequence::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty();
+}
+
+
+OFBool DRTReferencedDirectSegmentInstanceSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedDirectSegmentInstanceSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedDirectSegmentInstanceSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedDirectSegmentInstanceSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedDirectSegmentInstanceSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedDirectSegmentInstanceSequence::DRTReferencedDirectSegmentInstanceSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::DRTReferencedDirectSegmentInstanceSequence(const DRTReferencedDirectSegmentInstanceSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence &DRTReferencedDirectSegmentInstanceSequence::operator=(const DRTReferencedDirectSegmentInstanceSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::~DRTReferencedDirectSegmentInstanceSequence()
+{
+    clear();
+}
+
+
+void DRTReferencedDirectSegmentInstanceSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedDirectSegmentInstanceSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedDirectSegmentInstanceSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedDirectSegmentInstanceSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedDirectSegmentInstanceSequence::Item &DRTReferencedDirectSegmentInstanceSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::read(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedDirectSegmentInstanceSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedDirectSegmentInstanceSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedDirectSegmentInstanceSequence::write(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedDirectSegmentInstanceSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 2707b2b1379d7647b8e82a9d5ace769b0b58f9df..e5db9bb16bff16b2a650b37b10a9777e716cf243 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -264,10 +264,12 @@ OFCondition DRTROIElementalCompositionSequence::gotoFirstItem()
 OFCondition DRTROIElementalCompositionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index cb5cd4cca9a25387563d2e8a365101c810131f36..7e1aa16a646dcc8fbd0500d916dfc2d9ff9f083a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -266,10 +266,12 @@ OFCondition DRTReferencedFractionGroupSequence::gotoFirstItem()
 OFCondition DRTReferencedFractionGroupSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 310864cc623474ad269d0e989a8db9dd5de002a0..dbdf7ba116710317bff49702611de32c999c31c5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -250,10 +250,12 @@ OFCondition DRTReferencedFrameOfReferenceSequence::gotoFirstItem()
 OFCondition DRTReferencedFrameOfReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 8ab3882e1f7ca853e2f4032b0d40145e930a67f8..38e527decb4fe40610a08544ae72cf087dad1b8f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -663,10 +663,12 @@ OFCondition DRTRTROIIdentificationCodeSequence::gotoFirstItem()
 OFCondition DRTRTROIIdentificationCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 52352afc73f08a4beddc8a9778479df9d3c84a37..35b3aa447b0096d7d09e1364f24553a8bd9d32ca 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -342,10 +342,12 @@ OFCondition DRTReferencedImageSequence::gotoFirstItem()
 OFCondition DRTReferencedImageSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index e3866568fdaf7de7fb99b74d09f7bd609656d110..f90a9230e3c4d3ffe4b419b2bf31390a6eacd0dd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -279,10 +279,12 @@ OFCondition DRTReferencedInstanceSequence::gotoFirstItem()
 OFCondition DRTReferencedInstanceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 23eb33ece5fd24aef94913ded08bf0f36fd83df9..a0e4c0736fd2c026cbb8f1fb218617b5ef1fdcf0 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -310,10 +310,12 @@ OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoFirstItem()
 OFCondition DRTRecordedLateralSpreadingDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 851646844b150fa7fe37fdd785adcc78edd84da5..b30fd9018bde3c3c06101f3582bfe964d35c33e2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -328,10 +328,12 @@ OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTReferencedMeasuredDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index ec876c8689c8c4b6933aff54238d6ae4840dd80f..098df6a9eb54e20b6aa779f553caf69a53d5fe5b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -397,10 +397,12 @@ OFCondition DRTRangeModulatorSequence::gotoFirstItem()
 OFCondition DRTRangeModulatorSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrmss1.cc b/dcmrt/libsrc/drtrmss1.cc
new file mode 100644 (file)
index 0000000..88c9cd2
--- /dev/null
@@ -0,0 +1,680 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrmss1.h"
+
+
+// --- item class ---
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    IsocenterToRangeModulatorDistance(DCM_IsocenterToRangeModulatorDistance),
+    RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue),
+    RangeModulatorGatingStartWaterEquivalentThickness(DCM_RangeModulatorGatingStartWaterEquivalentThickness),
+    RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue),
+    RangeModulatorGatingStopWaterEquivalentThickness(DCM_RangeModulatorGatingStopWaterEquivalentThickness),
+    ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber)
+{
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    IsocenterToRangeModulatorDistance(copy.IsocenterToRangeModulatorDistance),
+    RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue),
+    RangeModulatorGatingStartWaterEquivalentThickness(copy.RangeModulatorGatingStartWaterEquivalentThickness),
+    RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue),
+    RangeModulatorGatingStopWaterEquivalentThickness(copy.RangeModulatorGatingStopWaterEquivalentThickness),
+    ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber)
+{
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        IsocenterToRangeModulatorDistance = copy.IsocenterToRangeModulatorDistance;
+        RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue;
+        RangeModulatorGatingStartWaterEquivalentThickness = copy.RangeModulatorGatingStartWaterEquivalentThickness;
+        RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue;
+        RangeModulatorGatingStopWaterEquivalentThickness = copy.RangeModulatorGatingStopWaterEquivalentThickness;
+        ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber;
+    }
+    return *this;
+}
+
+
+void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedRangeModulatorNumber.clear();
+        RangeModulatorGatingStartValue.clear();
+        RangeModulatorGatingStopValue.clear();
+        RangeModulatorGatingStartWaterEquivalentThickness.clear();
+        RangeModulatorGatingStopWaterEquivalentThickness.clear();
+        IsocenterToRangeModulatorDistance.clear();
+    }
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return ReferencedRangeModulatorNumber.isEmpty() &&
+           RangeModulatorGatingStartValue.isEmpty() &&
+           RangeModulatorGatingStopValue.isEmpty() &&
+           RangeModulatorGatingStartWaterEquivalentThickness.isEmpty() &&
+           RangeModulatorGatingStopWaterEquivalentThickness.isEmpty() &&
+           IsocenterToRangeModulatorDistance.isEmpty();
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeModulatorGatingStartWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeModulatorGatingStopWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence");
+        getAndCheckElementFromDataset(item, IsocenterToRangeModulatorDistance, "1", "3", "RangeModulatorSettingsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeModulatorDistance), "1", "3", "RangeModulatorSettingsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeModulatorDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartWaterEquivalentThickness).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopWaterEquivalentThickness).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return IsocenterToRangeModulatorDistance.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RangeModulatorGatingStartValue.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RangeModulatorGatingStartWaterEquivalentThickness.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RangeModulatorGatingStopValue.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RangeModulatorGatingStopWaterEquivalentThickness.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedRangeModulatorNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                                      const OFString &card,
+                                                                      const OFString &type,
+                                                                      const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                                       const OFString &card,
+                                                                       const OFString &type,
+                                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrmss2.cc b/dcmrt/libsrc/drtrmss2.cc
new file mode 100644 (file)
index 0000000..0ecbd5b
--- /dev/null
@@ -0,0 +1,605 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrmss2.h"
+
+
+// --- item class ---
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue),
+    RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue),
+    ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber)
+{
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue),
+    RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue),
+    ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber)
+{
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
+{
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue;
+        RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue;
+        ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber;
+    }
+    return *this;
+}
+
+
+void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedRangeModulatorNumber.clear();
+        RangeModulatorGatingStartValue.clear();
+        RangeModulatorGatingStopValue.clear();
+    }
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
+{
+    return ReferencedRangeModulatorNumber.isEmpty() &&
+           RangeModulatorGatingStartValue.isEmpty() &&
+           RangeModulatorGatingStopValue.isEmpty();
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RangeModulatorGatingStartValue.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RangeModulatorGatingStopValue.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedRangeModulatorNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule()
+{
+    clear();
+}
+
+
+void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
+                                                                                   const OFString &card,
+                                                                                   const OFString &type,
+                                                                                   const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
+                                                                                    const OFString &card,
+                                                                                    const OFString &type,
+                                                                                    const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrmss6.cc b/dcmrt/libsrc/drtrmss6.cc
deleted file mode 100644 (file)
index 75636e3..0000000
+++ /dev/null
@@ -1,678 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrmss6.h"
-
-
-// --- item class ---
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    IsocenterToRangeModulatorDistance(DCM_IsocenterToRangeModulatorDistance),
-    RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue),
-    RangeModulatorGatingStartWaterEquivalentThickness(DCM_RangeModulatorGatingStartWaterEquivalentThickness),
-    RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue),
-    RangeModulatorGatingStopWaterEquivalentThickness(DCM_RangeModulatorGatingStopWaterEquivalentThickness),
-    ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber)
-{
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    IsocenterToRangeModulatorDistance(copy.IsocenterToRangeModulatorDistance),
-    RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue),
-    RangeModulatorGatingStartWaterEquivalentThickness(copy.RangeModulatorGatingStartWaterEquivalentThickness),
-    RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue),
-    RangeModulatorGatingStopWaterEquivalentThickness(copy.RangeModulatorGatingStopWaterEquivalentThickness),
-    ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber)
-{
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        IsocenterToRangeModulatorDistance = copy.IsocenterToRangeModulatorDistance;
-        RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue;
-        RangeModulatorGatingStartWaterEquivalentThickness = copy.RangeModulatorGatingStartWaterEquivalentThickness;
-        RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue;
-        RangeModulatorGatingStopWaterEquivalentThickness = copy.RangeModulatorGatingStopWaterEquivalentThickness;
-        ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber;
-    }
-    return *this;
-}
-
-
-void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedRangeModulatorNumber.clear();
-        RangeModulatorGatingStartValue.clear();
-        RangeModulatorGatingStopValue.clear();
-        RangeModulatorGatingStartWaterEquivalentThickness.clear();
-        RangeModulatorGatingStopWaterEquivalentThickness.clear();
-        IsocenterToRangeModulatorDistance.clear();
-    }
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return ReferencedRangeModulatorNumber.isEmpty() &&
-           RangeModulatorGatingStartValue.isEmpty() &&
-           RangeModulatorGatingStopValue.isEmpty() &&
-           RangeModulatorGatingStartWaterEquivalentThickness.isEmpty() &&
-           RangeModulatorGatingStopWaterEquivalentThickness.isEmpty() &&
-           IsocenterToRangeModulatorDistance.isEmpty();
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorGatingStartWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorGatingStopWaterEquivalentThickness, "1", "3", "RangeModulatorSettingsSequence");
-        getAndCheckElementFromDataset(item, IsocenterToRangeModulatorDistance, "1", "3", "RangeModulatorSettingsSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopWaterEquivalentThickness), "1", "3", "RangeModulatorSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeModulatorDistance), "1", "3", "RangeModulatorSettingsSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeModulatorDistance(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeModulatorDistance).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStartWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartWaterEquivalentThickness).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getRangeModulatorGatingStopWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopWaterEquivalentThickness).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeModulatorDistance(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return IsocenterToRangeModulatorDistance.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return RangeModulatorGatingStartValue.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStartWaterEquivalentThickness(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return RangeModulatorGatingStartWaterEquivalentThickness.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return RangeModulatorGatingStopValue.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setRangeModulatorGatingStopWaterEquivalentThickness(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return RangeModulatorGatingStopWaterEquivalentThickness.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedRangeModulatorNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                                      const OFString &card,
-                                                                      const OFString &type,
-                                                                      const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                                       const OFString &card,
-                                                                       const OFString &type,
-                                                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrmss7.cc b/dcmrt/libsrc/drtrmss7.cc
deleted file mode 100644 (file)
index f6422d6..0000000
+++ /dev/null
@@ -1,603 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrmss7.h"
-
-
-// --- item class ---
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    RangeModulatorGatingStartValue(DCM_RangeModulatorGatingStartValue),
-    RangeModulatorGatingStopValue(DCM_RangeModulatorGatingStopValue),
-    ReferencedRangeModulatorNumber(DCM_ReferencedRangeModulatorNumber)
-{
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    RangeModulatorGatingStartValue(copy.RangeModulatorGatingStartValue),
-    RangeModulatorGatingStopValue(copy.RangeModulatorGatingStopValue),
-    ReferencedRangeModulatorNumber(copy.ReferencedRangeModulatorNumber)
-{
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
-{
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        RangeModulatorGatingStartValue = copy.RangeModulatorGatingStartValue;
-        RangeModulatorGatingStopValue = copy.RangeModulatorGatingStopValue;
-        ReferencedRangeModulatorNumber = copy.ReferencedRangeModulatorNumber;
-    }
-    return *this;
-}
-
-
-void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedRangeModulatorNumber.clear();
-        RangeModulatorGatingStartValue.clear();
-        RangeModulatorGatingStopValue.clear();
-    }
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
-{
-    return ReferencedRangeModulatorNumber.isEmpty() &&
-           RangeModulatorGatingStartValue.isEmpty() &&
-           RangeModulatorGatingStopValue.isEmpty();
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedRangeModulatorNumber, "1", "1", "RangeModulatorSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorGatingStartValue, "1", "1C", "RangeModulatorSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorGatingStopValue, "1", "1C", "RangeModulatorSettingsSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeModulatorNumber), "1", "1", "RangeModulatorSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStartValue), "1", "1C", "RangeModulatorSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeModulatorGatingStopValue), "1", "1C", "RangeModulatorSettingsSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStartValue(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStartValue).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeModulatorGatingStopValue(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, RangeModulatorGatingStopValue).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedRangeModulatorNumber, value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeModulatorNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedRangeModulatorNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStartValue(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return RangeModulatorGatingStartValue.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeModulatorGatingStopValue(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return RangeModulatorGatingStopValue.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeModulatorNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedRangeModulatorNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule()
-{
-    clear();
-}
-
-
-void DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
-                                                                                   const OFString &card,
-                                                                                   const OFString &type,
-                                                                                   const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RangeModulatorSettingsSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_RangeModulatorSettingsSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
-                                                                                    const OFString &card,
-                                                                                    const OFString &type,
-                                                                                    const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSettingsSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 68d49a1331bdd5632b829865f96e34e4befbbe22..0b3014e2a35b14b73fb0b2b8fbf79d6d7978cc58 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTRequestedProcedureCodeSequence::gotoFirstItem()
 OFCondition DRTRequestedProcedureCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 34a5fc4469c16ee040d875915fe11ac237d9fe7b..7fdc10b7f7cf276f5bac32725bae0b5b85d6f771 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -24,6 +24,8 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefaul
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InstitutionName(DCM_InstitutionName),
+    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     PersonTelecomInformation(DCM_PersonTelecomInformation),
@@ -37,6 +39,8 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const Item &copy)
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionCodeSequence(copy.InstitutionCodeSequence),
     InstitutionName(copy.InstitutionName),
+    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
     PersonTelecomInformation(copy.PersonTelecomInformation),
@@ -58,6 +62,8 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi
         InstitutionAddress = copy.InstitutionAddress;
         InstitutionCodeSequence = copy.InstitutionCodeSequence;
         InstitutionName = copy.InstitutionName;
+        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
         PersonTelecomInformation = copy.PersonTelecomInformation;
@@ -79,6 +85,8 @@ void DRTReferringPhysicianIdentificationSequence::Item::clear()
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
+        InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
     }
 }
 
@@ -91,7 +99,9 @@ OFBool DRTReferringPhysicianIdentificationSequence::Item::isEmpty()
            PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
-           InstitutionCodeSequence.isEmpty();
+           InstitutionCodeSequence.isEmpty() &&
+           InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty();
 }
 
 
@@ -115,6 +125,8 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::read(DcmItem &ite
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ReferringPhysicianIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "ReferringPhysicianIdentificationSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "ReferringPhysicianIdentificationSequence");
         result = EC_Normal;
     }
     return result;
@@ -134,6 +146,8 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::write(DcmItem &it
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ReferringPhysicianIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "ReferringPhysicianIdentificationSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "ReferringPhysicianIdentificationSequence");
     }
     return result;
 }
@@ -157,6 +171,15 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionNam
 }
 
 
+OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
+}
+
+
 OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -210,6 +233,19 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionNam
 }
 
 
+OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionalDepartmentName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -373,10 +409,12 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoFirstItem()
 OFCondition DRTReferringPhysicianIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index e8a021bf0a11a6b3cea6702bc56d7583a34e9b2d..acd30e50c7f679aebda7737ebe62e1badfb2676d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoFirstItem()
 OFCondition DRTReasonForPerformedProcedureCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5f2d84caf1c6da52af3c3c2ac01ae0bf8c50c6b6..807b9d42215452a51de49dfaafd2366c52564d85 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -343,10 +343,12 @@ OFCondition DRTReferencedPatientPhotoSequence::gotoFirstItem()
 OFCondition DRTReferencedPatientPhotoSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrpprs.cc b/dcmrt/libsrc/drtrpprs.cc
new file mode 100644 (file)
index 0000000..2f6a040
--- /dev/null
@@ -0,0 +1,625 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedPerformedProtocolSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrpprs.h"
+
+
+// --- item class ---
+
+DRTReferencedPerformedProtocolSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID),
+    SourceAcquisitionProtocolElementNumber(DCM_SourceAcquisitionProtocolElementNumber),
+    SourceReconstructionProtocolElementNumber(DCM_SourceReconstructionProtocolElementNumber)
+{
+}
+
+
+DRTReferencedPerformedProtocolSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID),
+    SourceAcquisitionProtocolElementNumber(copy.SourceAcquisitionProtocolElementNumber),
+    SourceReconstructionProtocolElementNumber(copy.SourceReconstructionProtocolElementNumber)
+{
+}
+
+
+DRTReferencedPerformedProtocolSequence::Item::~Item()
+{
+}
+
+
+DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+        SourceAcquisitionProtocolElementNumber = copy.SourceAcquisitionProtocolElementNumber;
+        SourceReconstructionProtocolElementNumber = copy.SourceReconstructionProtocolElementNumber;
+    }
+    return *this;
+}
+
+
+void DRTReferencedPerformedProtocolSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+        SourceAcquisitionProtocolElementNumber.clear();
+        SourceReconstructionProtocolElementNumber.clear();
+    }
+}
+
+
+OFBool DRTReferencedPerformedProtocolSequence::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty() &&
+           SourceAcquisitionProtocolElementNumber.isEmpty() &&
+           SourceReconstructionProtocolElementNumber.isEmpty();
+}
+
+
+OFBool DRTReferencedPerformedProtocolSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedPerformedProtocolSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedPerformedProtocolSequence");
+        getAndCheckElementFromDataset(item, SourceAcquisitionProtocolElementNumber, "1-n", "3", "ReferencedPerformedProtocolSequence");
+        getAndCheckElementFromDataset(item, SourceReconstructionProtocolElementNumber, "1-n", "3", "ReferencedPerformedProtocolSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedPerformedProtocolSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedPerformedProtocolSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(SourceAcquisitionProtocolElementNumber), "1-n", "3", "ReferencedPerformedProtocolSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(SourceReconstructionProtocolElementNumber), "1-n", "3", "ReferencedPerformedProtocolSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::getSourceAcquisitionProtocolElementNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, SourceAcquisitionProtocolElementNumber).getUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::getSourceReconstructionProtocolElementNumber(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, SourceReconstructionProtocolElementNumber).getUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::setSourceAcquisitionProtocolElementNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceAcquisitionProtocolElementNumber.putUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::Item::setSourceReconstructionProtocolElementNumber(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceReconstructionProtocolElementNumber.putUint16(value, pos);
+}
+
+
+// --- sequence class ---
+
+DRTReferencedPerformedProtocolSequence::DRTReferencedPerformedProtocolSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedPerformedProtocolSequence::DRTReferencedPerformedProtocolSequence(const DRTReferencedPerformedProtocolSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedPerformedProtocolSequence &DRTReferencedPerformedProtocolSequence::operator=(const DRTReferencedPerformedProtocolSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedPerformedProtocolSequence::~DRTReferencedPerformedProtocolSequence()
+{
+    clear();
+}
+
+
+void DRTReferencedPerformedProtocolSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedPerformedProtocolSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedPerformedProtocolSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedPerformedProtocolSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedPerformedProtocolSequence::Item &DRTReferencedPerformedProtocolSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::read(DcmItem &dataset,
+                                                         const OFString &card,
+                                                         const OFString &type,
+                                                         const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedPerformedProtocolSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedPerformedProtocolSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedPerformedProtocolSequence::write(DcmItem &dataset,
+                                                          const OFString &card,
+                                                          const OFString &type,
+                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedPerformedProtocolSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index d1c4e25a1c644064dd3629dccc7934c4361e2a17..87c7042054051bd56940bd9b2a92ec960cf7aa00 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -288,10 +288,12 @@ OFCondition DRTROIPhysicalPropertiesSequence::gotoFirstItem()
 OFCondition DRTROIPhysicalPropertiesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 3677adae53cbe8419e9c05b86ed44e223f56aec2..018c0c44d0bd8adc7e06d67ce4516719d95ae28e 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTReferencedPerformedProcedureStepSequence::gotoFirstItem()
 OFCondition DRTReferencedPerformedProcedureStepSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index bdd6743d594b58f59f6f4923a5062a3cb73e386e..dc833df9a61b873b4c7ee12b50c82cd99f6ac530 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTReferencedPatientSequence::gotoFirstItem()
 OFCondition DRTReferencedPatientSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5865b61ec2db504a1fd253e21a3ba3208f2417df..79ccbb5ea6e3cba39c08a365a7a398701b188d48 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -386,10 +386,12 @@ OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoFirstItem()
 OFCondition DRTReferencedReferenceImageSequenceInRTBeamsModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrris2.cc b/dcmrt/libsrc/drtrris2.cc
new file mode 100644 (file)
index 0000000..622e361
--- /dev/null
@@ -0,0 +1,613 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrris2.h"
+
+
+// --- item class ---
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferenceImageNumber(DCM_ReferenceImageNumber),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferenceImageNumber(copy.ReferenceImageNumber),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferenceImageNumber = copy.ReferenceImageNumber;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+        ReferenceImageNumber.clear();
+    }
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty() &&
+           ReferenceImageNumber.isEmpty();
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence");
+        getAndCheckElementFromDataset(item, ReferenceImageNumber, "1", "1", "ReferencedReferenceImageSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence");
+        addElementToDataset(result, item, new DcmIntegerString(ReferenceImageNumber), "1", "1", "ReferencedReferenceImageSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferenceImageNumber, value, pos);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferenceImageNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferenceImageNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferenceImageNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::~DRTReferencedReferenceImageSequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                                        const OFString &card,
+                                                                        const OFString &type,
+                                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                                         const OFString &card,
+                                                                         const OFString &type,
+                                                                         const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrris3.cc b/dcmrt/libsrc/drtrris3.cc
new file mode 100644 (file)
index 0000000..27c18ea
--- /dev/null
@@ -0,0 +1,575 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrris3.h"
+
+
+// --- item class ---
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::~Item()
+{
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+    }
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty();
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule()
+{
+    clear();
+}
+
+
+void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset,
+                                                                                       const OFString &card,
+                                                                                       const OFString &type,
+                                                                                       const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset,
+                                                                                        const OFString &card,
+                                                                                        const OFString &type,
+                                                                                        const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrris6.cc b/dcmrt/libsrc/drtrris6.cc
deleted file mode 100644 (file)
index 707c224..0000000
+++ /dev/null
@@ -1,611 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrris6.h"
-
-
-// --- item class ---
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    ReferenceImageNumber(DCM_ReferenceImageNumber),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferenceImageNumber(copy.ReferenceImageNumber),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferenceImageNumber = copy.ReferenceImageNumber;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
-        ReferenceImageNumber.clear();
-    }
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty() &&
-           ReferenceImageNumber.isEmpty();
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence");
-        getAndCheckElementFromDataset(item, ReferenceImageNumber, "1", "1", "ReferencedReferenceImageSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence");
-        addElementToDataset(result, item, new DcmIntegerString(ReferenceImageNumber), "1", "1", "ReferencedReferenceImageSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferenceImageNumber, value, pos);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferenceImageNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferenceImageNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferenceImageNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferenceImageNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::DRTReferencedReferenceImageSequenceInRTIonBeamsModule(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator=(const DRTReferencedReferenceImageSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::~DRTReferencedReferenceImageSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTReferencedReferenceImageSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedReferenceImageSequenceInRTIonBeamsModule::Item &DRTReferencedReferenceImageSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                                        const OFString &card,
-                                                                        const OFString &type,
-                                                                        const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                                         const OFString &card,
-                                                                         const OFString &type,
-                                                                         const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrris9.cc b/dcmrt/libsrc/drtrris9.cc
deleted file mode 100644 (file)
index 5c67995..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrris9.h"
-
-
-// --- item class ---
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::~Item()
-{
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
-    }
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty()
-{
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty();
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedReferenceImageSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedReferenceImageSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedReferenceImageSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedReferenceImageSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::~DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule()
-{
-    clear();
-}
-
-
-void DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::Item &DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset,
-                                                                                       const OFString &card,
-                                                                                       const OFString &type,
-                                                                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedReferenceImageSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedReferenceImageSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset,
-                                                                                        const OFString &card,
-                                                                                        const OFString &type,
-                                                                                        const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedReferenceImageSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 558c87aeb9fa54026fb80c833dc4d535b3d5297f..6de1237089817828b26c752071e833b0148a6f4f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -368,10 +368,12 @@ OFCondition DRTRecordedRangeModulatorSequence::gotoFirstItem()
 OFCondition DRTRecordedRangeModulatorSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 16d93daef5ef45941dcdfc82c8fce7cf2b73a722..5e0eb5cd9d3943ff134f028699afa1bcf2e663ef 100644 (file)
@@ -1,14 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *  Last modified on 2022-07-25 by Riesmeier
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 DRTRTROIObservationsSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    AnatomicRegionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     MaterialID(DCM_MaterialID),
     ObservationNumber(DCM_ObservationNumber),
+    PrimaryAnatomicStructureSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ROIInterpreter(DCM_ROIInterpreter),
-    ROIObservationDescription(DCM_RETIRED_ROIObservationDescription),
-    ROIObservationLabel(DCM_RETIRED_ROIObservationLabel),
     ROIPhysicalPropertiesSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     RTROIIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     RTROIInterpretedType(DCM_RTROIInterpretedType),
     RTRelatedROISequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReferencedROINumber(DCM_ReferencedROINumber),
     RelatedRTROIObservationsSequence(emptyDefaultItem /*emptyDefaultSequence*/),
-    SegmentedPropertyCategoryCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    SegmentedPropertyCategoryCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    TherapeuticRoleCategoryCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    TherapeuticRoleTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/)
 {
 }
 
 
 DRTRTROIObservationsSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    AnatomicRegionSequence(copy.AnatomicRegionSequence),
     MaterialID(copy.MaterialID),
     ObservationNumber(copy.ObservationNumber),
+    PrimaryAnatomicStructureSequence(copy.PrimaryAnatomicStructureSequence),
     ROIInterpreter(copy.ROIInterpreter),
-    ROIObservationDescription(copy.ROIObservationDescription),
-    ROIObservationLabel(copy.ROIObservationLabel),
     ROIPhysicalPropertiesSequence(copy.ROIPhysicalPropertiesSequence),
     RTROIIdentificationCodeSequence(copy.RTROIIdentificationCodeSequence),
     RTROIInterpretedType(copy.RTROIInterpretedType),
     RTRelatedROISequence(copy.RTRelatedROISequence),
     ReferencedROINumber(copy.ReferencedROINumber),
     RelatedRTROIObservationsSequence(copy.RelatedRTROIObservationsSequence),
-    SegmentedPropertyCategoryCodeSequence(copy.SegmentedPropertyCategoryCodeSequence)
+    SegmentedPropertyCategoryCodeSequence(copy.SegmentedPropertyCategoryCodeSequence),
+    TherapeuticRoleCategoryCodeSequence(copy.TherapeuticRoleCategoryCodeSequence),
+    TherapeuticRoleTypeCodeSequence(copy.TherapeuticRoleTypeCodeSequence)
 {
 }
 
@@ -66,11 +69,11 @@ DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::Item::operator
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        AnatomicRegionSequence = copy.AnatomicRegionSequence;
         MaterialID = copy.MaterialID;
         ObservationNumber = copy.ObservationNumber;
+        PrimaryAnatomicStructureSequence = copy.PrimaryAnatomicStructureSequence;
         ROIInterpreter = copy.ROIInterpreter;
-        ROIObservationDescription = copy.ROIObservationDescription;
-        ROIObservationLabel = copy.ROIObservationLabel;
         ROIPhysicalPropertiesSequence = copy.ROIPhysicalPropertiesSequence;
         RTROIIdentificationCodeSequence = copy.RTROIIdentificationCodeSequence;
         RTROIInterpretedType = copy.RTROIInterpretedType;
@@ -78,6 +81,8 @@ DRTRTROIObservationsSequence::Item &DRTRTROIObservationsSequence::Item::operator
         ReferencedROINumber = copy.ReferencedROINumber;
         RelatedRTROIObservationsSequence = copy.RelatedRTROIObservationsSequence;
         SegmentedPropertyCategoryCodeSequence = copy.SegmentedPropertyCategoryCodeSequence;
+        TherapeuticRoleCategoryCodeSequence = copy.TherapeuticRoleCategoryCodeSequence;
+        TherapeuticRoleTypeCodeSequence = copy.TherapeuticRoleTypeCodeSequence;
     }
     return *this;
 }
@@ -90,11 +95,13 @@ void DRTRTROIObservationsSequence::Item::clear()
         /* clear all DICOM attributes */
         ObservationNumber.clear();
         ReferencedROINumber.clear();
-        ROIObservationLabel.clear();
-        ROIObservationDescription.clear();
         RTRelatedROISequence.clear();
+        AnatomicRegionSequence.clear();
+        PrimaryAnatomicStructureSequence.clear();
         SegmentedPropertyCategoryCodeSequence.clear();
         RTROIIdentificationCodeSequence.clear();
+        TherapeuticRoleCategoryCodeSequence.clear();
+        TherapeuticRoleTypeCodeSequence.clear();
         RelatedRTROIObservationsSequence.clear();
         RTROIInterpretedType.clear();
         ROIInterpreter.clear();
@@ -108,11 +115,13 @@ OFBool DRTRTROIObservationsSequence::Item::isEmpty()
 {
     return ObservationNumber.isEmpty() &&
            ReferencedROINumber.isEmpty() &&
-           ROIObservationLabel.isEmpty() &&
-           ROIObservationDescription.isEmpty() &&
            RTRelatedROISequence.isEmpty() &&
+           AnatomicRegionSequence.isEmpty() &&
+           PrimaryAnatomicStructureSequence.isEmpty() &&
            SegmentedPropertyCategoryCodeSequence.isEmpty() &&
            RTROIIdentificationCodeSequence.isEmpty() &&
+           TherapeuticRoleCategoryCodeSequence.isEmpty() &&
+           TherapeuticRoleTypeCodeSequence.isEmpty() &&
            RelatedRTROIObservationsSequence.isEmpty() &&
            RTROIInterpretedType.isEmpty() &&
            ROIInterpreter.isEmpty() &&
@@ -136,11 +145,13 @@ OFCondition DRTRTROIObservationsSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, ObservationNumber, "1", "1", "RTROIObservationsSequence");
         getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "RTROIObservationsSequence");
-        getAndCheckElementFromDataset(item, ROIObservationLabel, "1", "3", "RTROIObservationsSequence");
-        getAndCheckElementFromDataset(item, ROIObservationDescription, "1", "3", "RTROIObservationsSequence");
         RTRelatedROISequence.read(item, "1-n", "3", "RTROIObservationsSequence");
+        AnatomicRegionSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
+        PrimaryAnatomicStructureSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         SegmentedPropertyCategoryCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         RTROIIdentificationCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
+        TherapeuticRoleCategoryCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
+        TherapeuticRoleTypeCodeSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         RelatedRTROIObservationsSequence.read(item, "1-n", "3", "RTROIObservationsSequence");
         getAndCheckElementFromDataset(item, RTROIInterpretedType, "1", "2", "RTROIObservationsSequence");
         getAndCheckElementFromDataset(item, ROIInterpreter, "1", "2", "RTROIObservationsSequence");
@@ -160,11 +171,13 @@ OFCondition DRTRTROIObservationsSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ObservationNumber), "1", "1", "RTROIObservationsSequence");
         addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "RTROIObservationsSequence");
-        addElementToDataset(result, item, new DcmShortString(ROIObservationLabel), "1", "3", "RTROIObservationsSequence");
-        addElementToDataset(result, item, new DcmShortText(ROIObservationDescription), "1", "3", "RTROIObservationsSequence");
         if (result.good()) result = RTRelatedROISequence.write(item, "1-n", "3", "RTROIObservationsSequence");
+        if (result.good()) result = AnatomicRegionSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
+        if (result.good()) result = PrimaryAnatomicStructureSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         if (result.good()) result = SegmentedPropertyCategoryCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         if (result.good()) result = RTROIIdentificationCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
+        if (result.good()) result = TherapeuticRoleCategoryCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
+        if (result.good()) result = TherapeuticRoleTypeCodeSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         if (result.good()) result = RelatedRTROIObservationsSequence.write(item, "1-n", "3", "RTROIObservationsSequence");
         addElementToDataset(result, item, new DcmCodeString(RTROIInterpretedType), "1", "2", "RTROIObservationsSequence");
         addElementToDataset(result, item, new DcmPersonName(ROIInterpreter), "1", "2", "RTROIObservationsSequence");
@@ -211,24 +224,6 @@ OFCondition DRTRTROIObservationsSequence::Item::getROIInterpreter(OFString &valu
 }
 
 
-OFCondition DRTRTROIObservationsSequence::Item::getROIObservationDescription(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ROIObservationDescription, value, pos);
-}
-
-
-OFCondition DRTRTROIObservationsSequence::Item::getROIObservationLabel(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ROIObservationLabel, value, pos);
-}
-
-
 OFCondition DRTRTROIObservationsSequence::Item::getRTROIInterpretedType(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -295,32 +290,6 @@ OFCondition DRTRTROIObservationsSequence::Item::setROIInterpreter(const OFString
 }
 
 
-OFCondition DRTRTROIObservationsSequence::Item::setROIObservationDescription(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
-        if (result.good())
-            result = ROIObservationDescription.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTRTROIObservationsSequence::Item::setROIObservationLabel(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ROIObservationLabel.putOFStringArray(value);
-    }
-    return result;
-}
-
-
 OFCondition DRTRTROIObservationsSequence::Item::setRTROIInterpretedType(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -471,10 +440,12 @@ OFCondition DRTRTROIObservationsSequence::gotoFirstItem()
 OFCondition DRTRTROIObservationsSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 52f4599079dcc61fb1305807ae9a5928a760a78c..773aa50928cba5e766a6fc90a2b9b4fdde9c5425 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoFirstItem()
 OFCondition DRTReasonForRequestedProcedureCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 292f13a47fb138e3d9eb4e04f21ace3438c7e32c..de9975ee951fcef76e7274b40b138cb8c548755d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -252,10 +252,12 @@ OFCondition DRTRelatedRTROIObservationsSequence::gotoFirstItem()
 OFCondition DRTRelatedRTROIObservationsSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index cb7a1a0f4c71b4d139515668ddd97216f02be2d3..8da93a83127626a481ca3971ad2d24f5fd8be109 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -281,10 +281,12 @@ OFCondition DRTRTRelatedROISequence::gotoFirstItem()
 OFCondition DRTRTRelatedROISequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index bc876dcc86b33cf4970e8face1b6a0a1019ae49d..f8cfc374451a3af22d6db1df83cea69dbf062de1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -310,10 +310,12 @@ OFCondition DRTRecordedRangeShifterSequence::gotoFirstItem()
 OFCondition DRTRecordedRangeShifterSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrrtps.cc b/dcmrt/libsrc/drtrrtps.cc
deleted file mode 100644 (file)
index 2d54f29..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedRTPlanSequence
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrrtps.h"
-
-
-// --- item class ---
-
-DRTReferencedRTPlanSequence::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedFractionGroupSequence(emptyDefaultItem /*emptyDefaultSequence*/),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequence::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedFractionGroupSequence(copy.ReferencedFractionGroupSequence),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequence::Item::~Item()
-{
-}
-
-
-DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedFractionGroupSequence = copy.ReferencedFractionGroupSequence;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedRTPlanSequence::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
-        ReferencedFractionGroupSequence.clear();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequence::Item::isEmpty()
-{
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty() &&
-           ReferencedFractionGroupSequence.isEmpty();
-}
-
-
-OFBool DRTReferencedRTPlanSequence::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
-        ReferencedFractionGroupSequence.read(item, "1-n", "1C", "ReferencedRTPlanSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
-        if (result.good()) result = ReferencedFractionGroupSequence.write(item, "1-n", "1C", "ReferencedRTPlanSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedRTPlanSequence &DRTReferencedRTPlanSequence::operator=(const DRTReferencedRTPlanSequence &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedRTPlanSequence::~DRTReferencedRTPlanSequence()
-{
-    clear();
-}
-
-
-void DRTReferencedRTPlanSequence::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequence::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedRTPlanSequence::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedRTPlanSequence::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::read(DcmItem &dataset,
-                                              const OFString &card,
-                                              const OFString &type,
-                                              const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequence::write(DcmItem &dataset,
-                                               const OFString &card,
-                                               const OFString &type,
-                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrrtps3.cc b/dcmrt/libsrc/drtrrtps3.cc
deleted file mode 100644 (file)
index 85513b6..0000000
+++ /dev/null
@@ -1,602 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrrtps3.h"
-
-
-// --- item class ---
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    RTPlanRelationship(DCM_RTPlanRelationship),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    RTPlanRelationship(copy.RTPlanRelationship),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::~Item()
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        RTPlanRelationship = copy.RTPlanRelationship;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
-        RTPlanRelationship.clear();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isEmpty()
-{
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty() &&
-           RTPlanRelationship.isEmpty();
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
-        getAndCheckElementFromDataset(item, RTPlanRelationship, "1", "1", "ReferencedRTPlanSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
-        addElementToDataset(result, item, new DcmCodeString(RTPlanRelationship), "1", "1", "ReferencedRTPlanSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getRTPlanRelationship(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(RTPlanRelationship, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setRTPlanRelationship(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = RTPlanRelationship.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::~DRTReferencedRTPlanSequenceInRTGeneralPlanModule()
-{
-    clear();
-}
-
-
-void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::read(DcmItem &dataset,
-                                                                   const OFString &card,
-                                                                   const OFString &type,
-                                                                   const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::write(DcmItem &dataset,
-                                                                    const OFString &card,
-                                                                    const OFString &type,
-                                                                    const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrrtps4.cc b/dcmrt/libsrc/drtrrtps4.cc
deleted file mode 100644 (file)
index afa0c37..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrrtps4.h"
-
-
-// --- item class ---
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::~Item()
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty()
-{
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty();
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule()
-{
-    clear();
-}
-
-
-void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset,
-                                                                              const OFString &card,
-                                                                              const OFString &type,
-                                                                              const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset,
-                                                                               const OFString &card,
-                                                                               const OFString &type,
-                                                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrrtps5.cc b/dcmrt/libsrc/drtrrtps5.cc
deleted file mode 100644 (file)
index 785aaf0..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedRTPlanSequenceInRTImageModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrrtps5.h"
-
-
-// --- item class ---
-
-DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::Item::~Item()
-{
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedRTPlanSequenceInRTImageModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isEmpty()
-{
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty();
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule &DRTReferencedRTPlanSequenceInRTImageModule::operator=(const DRTReferencedRTPlanSequenceInRTImageModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::~DRTReferencedRTPlanSequenceInRTImageModule()
-{
-    clear();
-}
-
-
-void DRTReferencedRTPlanSequenceInRTImageModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTImageModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedRTPlanSequenceInRTImageModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedRTPlanSequenceInRTImageModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::read(DcmItem &dataset,
-                                                             const OFString &card,
-                                                             const OFString &type,
-                                                             const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedRTPlanSequenceInRTImageModule::write(DcmItem &dataset,
-                                                              const OFString &card,
-                                                              const OFString &type,
-                                                              const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 7f8de565db77146cddc809badb9664bf620f8a84..f8fb37e998c981ac7b78bd0256771c72b70224aa 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTRequestingServiceCodeSequence::gotoFirstItem()
 OFCondition DRTRequestingServiceCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index a72557cdfbee7737357ae9e94cc6be2e58b550fe..5da2c9b9d276d2b3c7ca2a8338e81e0d675986d5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -250,10 +250,12 @@ OFCondition DRTReferencedSeriesSequence::gotoFirstItem()
 OFCondition DRTReferencedSeriesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 0945ebd90cabd29fcc077f39620ec44202d6d679..ba4c29a6a5adf44832fc9ba93a24fcae016727ef 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -250,10 +250,12 @@ OFCondition DRTRTReferencedSeriesSequence::gotoFirstItem()
 OFCondition DRTRTReferencedSeriesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 2cc059d02b62d0118bba84aa7bfdb1be6a253fe9..c57b215031d1febc724ea8219aefa5131a966c2f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -368,10 +368,12 @@ OFCondition DRTRangeShifterSequence::gotoFirstItem()
 OFCondition DRTRangeShifterSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrshs1.cc b/dcmrt/libsrc/drtrshs1.cc
new file mode 100644 (file)
index 0000000..4d54cb0
--- /dev/null
@@ -0,0 +1,634 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrshs1.h"
+
+
+// --- item class ---
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    IsocenterToRangeShifterDistance(DCM_IsocenterToRangeShifterDistance),
+    RangeShifterSetting(DCM_RangeShifterSetting),
+    RangeShifterWaterEquivalentThickness(DCM_RangeShifterWaterEquivalentThickness),
+    ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber)
+{
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    IsocenterToRangeShifterDistance(copy.IsocenterToRangeShifterDistance),
+    RangeShifterSetting(copy.RangeShifterSetting),
+    RangeShifterWaterEquivalentThickness(copy.RangeShifterWaterEquivalentThickness),
+    ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber)
+{
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::~Item()
+{
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        IsocenterToRangeShifterDistance = copy.IsocenterToRangeShifterDistance;
+        RangeShifterSetting = copy.RangeShifterSetting;
+        RangeShifterWaterEquivalentThickness = copy.RangeShifterWaterEquivalentThickness;
+        ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber;
+    }
+    return *this;
+}
+
+
+void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedRangeShifterNumber.clear();
+        RangeShifterSetting.clear();
+        IsocenterToRangeShifterDistance.clear();
+        RangeShifterWaterEquivalentThickness.clear();
+    }
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isEmpty()
+{
+    return ReferencedRangeShifterNumber.isEmpty() &&
+           RangeShifterSetting.isEmpty() &&
+           IsocenterToRangeShifterDistance.isEmpty() &&
+           RangeShifterWaterEquivalentThickness.isEmpty();
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence");
+        getAndCheckElementFromDataset(item, IsocenterToRangeShifterDistance, "1", "3", "RangeShifterSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeShifterWaterEquivalentThickness, "1", "3", "RangeShifterSettingsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence");
+        addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeShifterDistance), "1", "3", "RangeShifterSettingsSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeShifterWaterEquivalentThickness), "1", "3", "RangeShifterSettingsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeShifterDistance).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RangeShifterSetting, value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, RangeShifterWaterEquivalentThickness).getFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return IsocenterToRangeShifterDistance.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = RangeShifterSetting.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RangeShifterWaterEquivalentThickness.putFloat32(value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedRangeShifterNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsModule()
+{
+    clear();
+}
+
+
+void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset,
+                                                                    const OFString &card,
+                                                                    const OFString &type,
+                                                                    const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset,
+                                                                     const OFString &card,
+                                                                     const OFString &type,
+                                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrshs2.cc b/dcmrt/libsrc/drtrshs2.cc
new file mode 100644 (file)
index 0000000..a3d9476
--- /dev/null
@@ -0,0 +1,584 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrshs2.h"
+
+
+// --- item class ---
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    RangeShifterSetting(DCM_RangeShifterSetting),
+    ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber)
+{
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    RangeShifterSetting(copy.RangeShifterSetting),
+    ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber)
+{
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
+{
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        RangeShifterSetting = copy.RangeShifterSetting;
+        ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber;
+    }
+    return *this;
+}
+
+
+void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedRangeShifterNumber.clear();
+        RangeShifterSetting.clear();
+    }
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
+{
+    return ReferencedRangeShifterNumber.isEmpty() &&
+           RangeShifterSetting.isEmpty();
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence");
+        getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence");
+        addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RangeShifterSetting, value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = RangeShifterSetting.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedRangeShifterNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule()
+{
+    clear();
+}
+
+
+void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
+                                                                                 const OFString &card,
+                                                                                 const OFString &type,
+                                                                                 const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
+                                                                                  const OFString &card,
+                                                                                  const OFString &type,
+                                                                                  const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrshs6.cc b/dcmrt/libsrc/drtrshs6.cc
deleted file mode 100644 (file)
index 2eba910..0000000
+++ /dev/null
@@ -1,632 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrshs6.h"
-
-
-// --- item class ---
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    IsocenterToRangeShifterDistance(DCM_IsocenterToRangeShifterDistance),
-    RangeShifterSetting(DCM_RangeShifterSetting),
-    RangeShifterWaterEquivalentThickness(DCM_RangeShifterWaterEquivalentThickness),
-    ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber)
-{
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    IsocenterToRangeShifterDistance(copy.IsocenterToRangeShifterDistance),
-    RangeShifterSetting(copy.RangeShifterSetting),
-    RangeShifterWaterEquivalentThickness(copy.RangeShifterWaterEquivalentThickness),
-    ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber)
-{
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::~Item()
-{
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        IsocenterToRangeShifterDistance = copy.IsocenterToRangeShifterDistance;
-        RangeShifterSetting = copy.RangeShifterSetting;
-        RangeShifterWaterEquivalentThickness = copy.RangeShifterWaterEquivalentThickness;
-        ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber;
-    }
-    return *this;
-}
-
-
-void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedRangeShifterNumber.clear();
-        RangeShifterSetting.clear();
-        IsocenterToRangeShifterDistance.clear();
-        RangeShifterWaterEquivalentThickness.clear();
-    }
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isEmpty()
-{
-    return ReferencedRangeShifterNumber.isEmpty() &&
-           RangeShifterSetting.isEmpty() &&
-           IsocenterToRangeShifterDistance.isEmpty() &&
-           RangeShifterWaterEquivalentThickness.isEmpty();
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence");
-        getAndCheckElementFromDataset(item, IsocenterToRangeShifterDistance, "1", "3", "RangeShifterSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeShifterWaterEquivalentThickness, "1", "3", "RangeShifterSettingsSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence");
-        addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(IsocenterToRangeShifterDistance), "1", "3", "RangeShifterSettingsSequence");
-        addElementToDataset(result, item, new DcmFloatingPointSingle(RangeShifterWaterEquivalentThickness), "1", "3", "RangeShifterSettingsSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getIsocenterToRangeShifterDistance(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, IsocenterToRangeShifterDistance).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(RangeShifterSetting, value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getRangeShifterWaterEquivalentThickness(Float32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmFloatingPointSingle &, RangeShifterWaterEquivalentThickness).getFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return IsocenterToRangeShifterDistance.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = RangeShifterSetting.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos)
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return RangeShifterWaterEquivalentThickness.putFloat32(value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedRangeShifterNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsModule()
-{
-    clear();
-}
-
-
-void DRTRangeShifterSettingsSequenceInRTIonBeamsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTRangeShifterSettingsSequenceInRTIonBeamsModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::read(DcmItem &dataset,
-                                                                    const OFString &card,
-                                                                    const OFString &type,
-                                                                    const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsModule::write(DcmItem &dataset,
-                                                                     const OFString &card,
-                                                                     const OFString &type,
-                                                                     const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrshs7.cc b/dcmrt/libsrc/drtrshs7.cc
deleted file mode 100644 (file)
index 45a8e6c..0000000
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrshs7.h"
-
-
-// --- item class ---
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    RangeShifterSetting(DCM_RangeShifterSetting),
-    ReferencedRangeShifterNumber(DCM_ReferencedRangeShifterNumber)
-{
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    RangeShifterSetting(copy.RangeShifterSetting),
-    ReferencedRangeShifterNumber(copy.ReferencedRangeShifterNumber)
-{
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::~Item()
-{
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        RangeShifterSetting = copy.RangeShifterSetting;
-        ReferencedRangeShifterNumber = copy.ReferencedRangeShifterNumber;
-    }
-    return *this;
-}
-
-
-void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedRangeShifterNumber.clear();
-        RangeShifterSetting.clear();
-    }
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isEmpty()
-{
-    return ReferencedRangeShifterNumber.isEmpty() &&
-           RangeShifterSetting.isEmpty();
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedRangeShifterNumber, "1", "1", "RangeShifterSettingsSequence");
-        getAndCheckElementFromDataset(item, RangeShifterSetting, "1", "1", "RangeShifterSettingsSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedRangeShifterNumber), "1", "1", "RangeShifterSettingsSequence");
-        addElementToDataset(result, item, new DcmLongString(RangeShifterSetting), "1", "1", "RangeShifterSettingsSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getRangeShifterSetting(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(RangeShifterSetting, value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedRangeShifterNumber, value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedRangeShifterNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setRangeShifterSetting(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = RangeShifterSetting.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item::setReferencedRangeShifterNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedRangeShifterNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::~DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule()
-{
-    clear();
-}
-
-
-void DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::Item &DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::read(DcmItem &dataset,
-                                                                                 const OFString &card,
-                                                                                 const OFString &type,
-                                                                                 const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RangeShifterSettingsSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_RangeShifterSettingsSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule::write(DcmItem &dataset,
-                                                                                  const OFString &card,
-                                                                                  const OFString &type,
-                                                                                  const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeShifterSettingsSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
index 2bdba75b0fafde5fb1f15815a5c876f54c30fb01..e2d6d8d512ca845a1ea7869ab65e5cbd436b9a46 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -364,10 +364,12 @@ OFCondition DRTReferencedSetupImageSequence::gotoFirstItem()
 OFCondition DRTReferencedSetupImageSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 8e3753fbf2d65bc29c7595b6c33ae33a2d57f8ef..4b211c9381d8cdbdcadef9ea62b4a96692433c39 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTRecordedSnoutSequence::gotoFirstItem()
 OFCondition DRTRecordedSnoutSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 2ac0dd7c5d2d6e1cd1d88b705db326ecf09a4bc7..06c0c2d9c364e81d2b67f9b9d0ce1e25ee792915 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -364,10 +364,12 @@ OFCondition DRTReferencedSOPSequence::gotoFirstItem()
 OFCondition DRTReferencedSOPSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 69f0edade8317ded8f00309c399ba2cab86e1001..5cc0daffcf07382cc3668def78233ca16188e983 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTReferencedSpatialRegistrationSequence::gotoFirstItem()
 OFCondition DRTReferencedSpatialRegistrationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 8b27697229c47f9283a19ab4a8008d442918398d..19f67ed95fa87a20807c4be4fd84f83db327eaf1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTReferencedStudySequence::gotoFirstItem()
 OFCondition DRTReferencedStudySequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 46e3250ca5dfaed9db0cbb415351fa78a748664d..a1480a08d67e436709f6501cdff02d23bfabdc4a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTReferencedStructureSetSequence::gotoFirstItem()
 OFCondition DRTReferencedStructureSetSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 7ffb7c801063352efde12afc8b741f04eefb1d26..f750ce54860c19d4d1f743bc9b0472579715d233 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -279,10 +279,12 @@ OFCondition DRTRTReferencedStudySequence::gotoFirstItem()
 OFCondition DRTRTReferencedStudySequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrtps1.cc b/dcmrt/libsrc/drtrtps1.cc
new file mode 100644 (file)
index 0000000..fd335aa
--- /dev/null
@@ -0,0 +1,607 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedRTPlanSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrtps1.h"
+
+
+// --- item class ---
+
+DRTReferencedRTPlanSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedFractionGroupSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ReferencedPlanOverviewIndex(DCM_ReferencedPlanOverviewIndex),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedFractionGroupSequence(copy.ReferencedFractionGroupSequence),
+    ReferencedPlanOverviewIndex(copy.ReferencedPlanOverviewIndex),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequence::Item::~Item()
+{
+}
+
+
+DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedFractionGroupSequence = copy.ReferencedFractionGroupSequence;
+        ReferencedPlanOverviewIndex = copy.ReferencedPlanOverviewIndex;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedRTPlanSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+        ReferencedPlanOverviewIndex.clear();
+        ReferencedFractionGroupSequence.clear();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequence::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty() &&
+           ReferencedPlanOverviewIndex.isEmpty() &&
+           ReferencedFractionGroupSequence.isEmpty();
+}
+
+
+OFBool DRTReferencedRTPlanSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
+        getAndCheckElementFromDataset(item, ReferencedPlanOverviewIndex, "1", "1C", "ReferencedRTPlanSequence");
+        ReferencedFractionGroupSequence.read(item, "1-n", "1C", "ReferencedRTPlanSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(ReferencedPlanOverviewIndex), "1", "1C", "ReferencedRTPlanSequence");
+        if (result.good()) result = ReferencedFractionGroupSequence.write(item, "1-n", "1C", "ReferencedRTPlanSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::getReferencedPlanOverviewIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, ReferencedPlanOverviewIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::setReferencedPlanOverviewIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ReferencedPlanOverviewIndex.putUint16(value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedRTPlanSequence::DRTReferencedRTPlanSequence(const DRTReferencedRTPlanSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedRTPlanSequence &DRTReferencedRTPlanSequence::operator=(const DRTReferencedRTPlanSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedRTPlanSequence::~DRTReferencedRTPlanSequence()
+{
+    clear();
+}
+
+
+void DRTReferencedRTPlanSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedRTPlanSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedRTPlanSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedRTPlanSequence::Item &DRTReferencedRTPlanSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::read(DcmItem &dataset,
+                                              const OFString &card,
+                                              const OFString &type,
+                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequence::write(DcmItem &dataset,
+                                               const OFString &card,
+                                               const OFString &type,
+                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrtps2.cc b/dcmrt/libsrc/drtrtps2.cc
new file mode 100644 (file)
index 0000000..8749a8c
--- /dev/null
@@ -0,0 +1,604 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrtps2.h"
+
+
+// --- item class ---
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    RTPlanRelationship(DCM_RTPlanRelationship),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    RTPlanRelationship(copy.RTPlanRelationship),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::~Item()
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        RTPlanRelationship = copy.RTPlanRelationship;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+        RTPlanRelationship.clear();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty() &&
+           RTPlanRelationship.isEmpty();
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
+        getAndCheckElementFromDataset(item, RTPlanRelationship, "1", "1", "ReferencedRTPlanSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
+        addElementToDataset(result, item, new DcmCodeString(RTPlanRelationship), "1", "1", "ReferencedRTPlanSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getRTPlanRelationship(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(RTPlanRelationship, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setRTPlanRelationship(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = RTPlanRelationship.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::DRTReferencedRTPlanSequenceInRTGeneralPlanModule(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralPlanModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::~DRTReferencedRTPlanSequenceInRTGeneralPlanModule()
+{
+    clear();
+}
+
+
+void DRTReferencedRTPlanSequenceInRTGeneralPlanModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralPlanModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedRTPlanSequenceInRTGeneralPlanModule::Item &DRTReferencedRTPlanSequenceInRTGeneralPlanModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::read(DcmItem &dataset,
+                                                                   const OFString &card,
+                                                                   const OFString &type,
+                                                                   const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralPlanModule::write(DcmItem &dataset,
+                                                                    const OFString &card,
+                                                                    const OFString &type,
+                                                                    const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrtps3.cc b/dcmrt/libsrc/drtrtps3.cc
new file mode 100644 (file)
index 0000000..c487cd2
--- /dev/null
@@ -0,0 +1,575 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrtps3.h"
+
+
+// --- item class ---
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::~Item()
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty();
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule()
+{
+    clear();
+}
+
+
+void DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset,
+                                                                              const OFString &card,
+                                                                              const OFString &type,
+                                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset,
+                                                                               const OFString &card,
+                                                                               const OFString &type,
+                                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrtps4.cc b/dcmrt/libsrc/drtrtps4.cc
new file mode 100644 (file)
index 0000000..7b88aaf
--- /dev/null
@@ -0,0 +1,575 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedRTPlanSequenceInRTImageModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrtps4.h"
+
+
+// --- item class ---
+
+DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::Item::~Item()
+{
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedRTPlanSequenceInRTImageModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty();
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTImageModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedRTPlanSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedRTPlanSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedRTPlanSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedRTPlanSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::DRTReferencedRTPlanSequenceInRTImageModule(const DRTReferencedRTPlanSequenceInRTImageModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule &DRTReferencedRTPlanSequenceInRTImageModule::operator=(const DRTReferencedRTPlanSequenceInRTImageModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::~DRTReferencedRTPlanSequenceInRTImageModule()
+{
+    clear();
+}
+
+
+void DRTReferencedRTPlanSequenceInRTImageModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTImageModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedRTPlanSequenceInRTImageModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedRTPlanSequenceInRTImageModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedRTPlanSequenceInRTImageModule::Item &DRTReferencedRTPlanSequenceInRTImageModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::read(DcmItem &dataset,
+                                                             const OFString &card,
+                                                             const OFString &type,
+                                                             const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedRTPlanSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedRTPlanSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedRTPlanSequenceInRTImageModule::write(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedRTPlanSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drtrtrs1.cc b/dcmrt/libsrc/drtrtrs1.cc
new file mode 100644 (file)
index 0000000..9d9038c
--- /dev/null
@@ -0,0 +1,582 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrtrs1.h"
+
+
+// --- item class ---
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ReferencedBeamSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ReferencedBeamSequence(copy.ReferencedBeamSequence),
+    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
+    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+{
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::~Item()
+{
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ReferencedBeamSequence = copy.ReferencedBeamSequence;
+        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
+        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+    }
+    return *this;
+}
+
+
+void DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        ReferencedSOPClassUID.clear();
+        ReferencedSOPInstanceUID.clear();
+        ReferencedBeamSequence.clear();
+    }
+}
+
+
+OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isEmpty()
+{
+    return ReferencedSOPClassUID.isEmpty() &&
+           ReferencedSOPInstanceUID.isEmpty() &&
+           ReferencedBeamSequence.isEmpty();
+}
+
+
+OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedTreatmentRecordSequence");
+        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedTreatmentRecordSequence");
+        ReferencedBeamSequence.read(item, "1-n", "1C", "ReferencedTreatmentRecordSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedTreatmentRecordSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedTreatmentRecordSequence");
+        if (result.good()) result = ReferencedBeamSequence.write(item, "1-n", "1C", "ReferencedTreatmentRecordSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPClassUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ReferencedSOPInstanceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::~DRTReferencedTreatmentRecordSequenceInRTDoseModule()
+{
+    clear();
+}
+
+
+void DRTReferencedTreatmentRecordSequenceInRTDoseModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReferencedTreatmentRecordSequenceInRTDoseModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::read(DcmItem &dataset,
+                                                                     const OFString &card,
+                                                                     const OFString &type,
+                                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReferencedTreatmentRecordSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReferencedTreatmentRecordSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::write(DcmItem &dataset,
+                                                                      const OFString &card,
+                                                                      const OFString &type,
+                                                                      const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedTreatmentRecordSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index ab4529da778f30314b224eafa5130f0e9ce0c515..625f16dfceca5018171fff6898090dc805302e5d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
+ *  Source file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 // --- item class ---
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const OFBool emptyDefaultItem)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedBeamSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
     ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
 {
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::Item(const Item &copy)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedBeamSequence(copy.ReferencedBeamSequence),
     ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
     ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
 {
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::~Item()
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::~Item()
 {
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::operator=(const Item &copy)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedBeamSequence = copy.ReferencedBeamSequence;
         ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
         ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
     }
@@ -55,33 +52,31 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatment
 }
 
 
-void DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::clear()
+void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
         ReferencedSOPClassUID.clear();
         ReferencedSOPInstanceUID.clear();
-        ReferencedBeamSequence.clear();
     }
 }
 
 
-OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isEmpty()
+OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty()
 {
     return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty() &&
-           ReferencedBeamSequence.isEmpty();
+           ReferencedSOPInstanceUID.isEmpty();
 }
 
 
-OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::isValid() const
+OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::read(DcmItem &item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -90,14 +85,13 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::read(DcmIt
         clear();
         getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedTreatmentRecordSequence");
         getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedTreatmentRecordSequence");
-        ReferencedBeamSequence.read(item, "1-n", "1C", "ReferencedTreatmentRecordSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::write(DcmItem &item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -105,13 +99,12 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::write(DcmI
         result = EC_Normal;
         addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedTreatmentRecordSequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedTreatmentRecordSequence");
-        if (result.good()) result = ReferencedBeamSequence.write(item, "1-n", "1C", "ReferencedTreatmentRecordSequence");
     }
     return result;
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -120,7 +113,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferen
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -129,7 +122,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::getReferen
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -142,7 +135,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferen
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -157,7 +150,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item::setReferen
 
 // --- sequence class ---
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const OFBool emptyDefaultSequence)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -167,7 +160,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecord
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecordSequenceInRTDoseModule(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -193,7 +186,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::DRTReferencedTreatmentRecord
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTDoseModule &copy)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy)
 {
     if (this != &copy)
     {
@@ -221,13 +214,13 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule &DRTReferencedTreatmentRecord
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::~DRTReferencedTreatmentRecordSequenceInRTDoseModule()
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule()
 {
     clear();
 }
 
 
-void DRTReferencedTreatmentRecordSequenceInRTDoseModule::clear()
+void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -246,25 +239,25 @@ void DRTReferencedTreatmentRecordSequenceInRTDoseModule::clear()
 }
 
 
-OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isEmpty()
+OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferencedTreatmentRecordSequenceInRTDoseModule::isValid() const
+OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-size_t DRTReferencedTreatmentRecordSequenceInRTDoseModule::getNumberOfItems() const
+size_t DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoFirstItem()
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -276,19 +269,21 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoFirstItem()
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoNextItem()
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -308,7 +303,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const s
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -328,13 +323,13 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const s
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::gotoItem(const size_t num)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem(Item *&item) const
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -346,7 +341,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem(I
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem()
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -355,7 +350,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatment
 }
 
 
-const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getCurrentItem() const
+const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -364,7 +359,7 @@ const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTre
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num, Item *&item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -374,7 +369,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const si
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -384,7 +379,7 @@ DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatment
 }
 
 
-const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::getItem(const size_t num) const
+const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -394,19 +389,19 @@ const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTre
 }
 
 
-DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num)
+DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedTreatmentRecordSequenceInRTDoseModule::Item &DRTReferencedTreatmentRecordSequenceInRTDoseModule::operator[](const size_t num) const
+const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::addItem(Item *&item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -423,7 +418,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::addItem(Item *&i
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const size_t pos, Item *&item)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -446,7 +441,7 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::insertItem(const
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const size_t pos)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -464,10 +459,10 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::removeItem(const
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::read(DcmItem &dataset,
-                                                                     const OFString &card,
-                                                                     const OFString &type,
-                                                                     const char *moduleName)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset,
+                                                                                       const OFString &card,
+                                                                                       const OFString &type,
+                                                                                       const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -514,10 +509,10 @@ OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::read(DcmItem &da
 }
 
 
-OFCondition DRTReferencedTreatmentRecordSequenceInRTDoseModule::write(DcmItem &dataset,
-                                                                      const OFString &card,
-                                                                      const OFString &type,
-                                                                      const char *moduleName)
+OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset,
+                                                                                        const OFString &card,
+                                                                                        const OFString &type,
+                                                                                        const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrtrs4.cc b/dcmrt/libsrc/drtrtrs4.cc
deleted file mode 100644 (file)
index fa81902..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drtrtrs4.h"
-
-
-// --- item class ---
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
-{
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::~Item()
-{
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
-    }
-    return *this;
-}
-
-
-void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
-    }
-}
-
-
-OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isEmpty()
-{
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty();
-}
-
-
-OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedTreatmentRecordSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedTreatmentRecordSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedTreatmentRecordSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedTreatmentRecordSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPClassUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator=(const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::~DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule()
-{
-    clear();
-}
-
-
-void DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::Item &DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::read(DcmItem &dataset,
-                                                                                       const OFString &card,
-                                                                                       const OFString &type,
-                                                                                       const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedTreatmentRecordSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_ReferencedTreatmentRecordSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule::write(DcmItem &dataset,
-                                                                                        const OFString &card,
-                                                                                        const OFString &type,
-                                                                                        const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedTreatmentRecordSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drtrvcs.cc b/dcmrt/libsrc/drtrvcs.cc
new file mode 100644 (file)
index 0000000..8c20c30
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTReasonForVisitCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtrvcs.h"
+
+
+// --- item class ---
+
+DRTReasonForVisitCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTReasonForVisitCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTReasonForVisitCodeSequence::Item::~Item()
+{
+}
+
+
+DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTReasonForVisitCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTReasonForVisitCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTReasonForVisitCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ReasonForVisitCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForVisitCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "ReasonForVisitCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ReasonForVisitCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForVisitCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "ReasonForVisitCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTReasonForVisitCodeSequence::DRTReasonForVisitCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTReasonForVisitCodeSequence::DRTReasonForVisitCodeSequence(const DRTReasonForVisitCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTReasonForVisitCodeSequence &DRTReasonForVisitCodeSequence::operator=(const DRTReasonForVisitCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTReasonForVisitCodeSequence::~DRTReasonForVisitCodeSequence()
+{
+    clear();
+}
+
+
+void DRTReasonForVisitCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTReasonForVisitCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTReasonForVisitCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTReasonForVisitCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTReasonForVisitCodeSequence::Item &DRTReasonForVisitCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::read(DcmItem &dataset,
+                                                const OFString &card,
+                                                const OFString &type,
+                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_ReasonForVisitCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_ReasonForVisitCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTReasonForVisitCodeSequence::write(DcmItem &dataset,
+                                                 const OFString &card,
+                                                 const OFString &type,
+                                                 const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReasonForVisitCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 31aa5caa2ddf4aecc5f56e54588352af9824fa0f..116fc3cf71d7f09218640783c61320677ffd3dc2 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTReferencedVerificationImageSequence::gotoFirstItem()
 OFCondition DRTReferencedVerificationImageSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 2484dae8e8ead2ef73fed8fc3f99acc62c55c875..7023e3fbe5a09b41719c64cd1f53974abb12ff4a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -415,10 +415,12 @@ OFCondition DRTRecordedWedgeSequence::gotoFirstItem()
 OFCondition DRTRecordedWedgeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index a65903c5d3c6e5466cd3545398e14e3436df8c9b..b2914deb7cb7b866d4da1e754141ae45ee829458 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -461,10 +461,12 @@ OFCondition DRTRealWorldValueMappingSequence::gotoFirstItem()
 OFCondition DRTRealWorldValueMappingSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 3e0fef6a05e4a6f19a82f64d1f3aa360d316e724..35823f809ba376219e9d69ca4f2c50c85ff8b104 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -250,10 +250,12 @@ OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoFirstItem(
 OFCondition DRTStudiesContainingOtherReferencedInstancesSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 03e75af2d67ea388197c1b1f2ba3e090008de810..21cc5e3aec6a4962a14fa2f002f85ad24eb3c0c6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStrainCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTStrainCodeSequence::gotoFirstItem()
 OFCondition DRTStrainCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtscvs.cc b/dcmrt/libsrc/drtscvs.cc
new file mode 100644 (file)
index 0000000..1f66a54
--- /dev/null
@@ -0,0 +1,578 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTSourceConceptualVolumeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtscvs.h"
+
+
+// --- item class ---
+
+DRTSourceConceptualVolumeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    ConceptualVolumeConstituentIndex(DCM_ConceptualVolumeConstituentIndex),
+    ConceptualVolumeConstituentSegmentationReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    SourceConceptualVolumeUID(DCM_SourceConceptualVolumeUID)
+{
+}
+
+
+DRTSourceConceptualVolumeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ConceptualVolumeConstituentIndex(copy.ConceptualVolumeConstituentIndex),
+    ConceptualVolumeConstituentSegmentationReferenceSequence(copy.ConceptualVolumeConstituentSegmentationReferenceSequence),
+    SourceConceptualVolumeUID(copy.SourceConceptualVolumeUID)
+{
+}
+
+
+DRTSourceConceptualVolumeSequence::Item::~Item()
+{
+}
+
+
+DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        ConceptualVolumeConstituentIndex = copy.ConceptualVolumeConstituentIndex;
+        ConceptualVolumeConstituentSegmentationReferenceSequence = copy.ConceptualVolumeConstituentSegmentationReferenceSequence;
+        SourceConceptualVolumeUID = copy.SourceConceptualVolumeUID;
+    }
+    return *this;
+}
+
+
+void DRTSourceConceptualVolumeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        SourceConceptualVolumeUID.clear();
+        ConceptualVolumeConstituentIndex.clear();
+        ConceptualVolumeConstituentSegmentationReferenceSequence.clear();
+    }
+}
+
+
+OFBool DRTSourceConceptualVolumeSequence::Item::isEmpty()
+{
+    return SourceConceptualVolumeUID.isEmpty() &&
+           ConceptualVolumeConstituentIndex.isEmpty() &&
+           ConceptualVolumeConstituentSegmentationReferenceSequence.isEmpty();
+}
+
+
+OFBool DRTSourceConceptualVolumeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, SourceConceptualVolumeUID, "1", "1", "SourceConceptualVolumeSequence");
+        getAndCheckElementFromDataset(item, ConceptualVolumeConstituentIndex, "1", "1", "SourceConceptualVolumeSequence");
+        ConceptualVolumeConstituentSegmentationReferenceSequence.read(item, "1-n", "2", "SourceConceptualVolumeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmUniqueIdentifier(SourceConceptualVolumeUID), "1", "1", "SourceConceptualVolumeSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(ConceptualVolumeConstituentIndex), "1", "1", "SourceConceptualVolumeSequence");
+        if (result.good()) result = ConceptualVolumeConstituentSegmentationReferenceSequence.write(item, "1-n", "2", "SourceConceptualVolumeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::Item::getConceptualVolumeConstituentIndex(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, ConceptualVolumeConstituentIndex).getUint16(value, pos);
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::Item::getSourceConceptualVolumeUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SourceConceptualVolumeUID, value, pos);
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::Item::setConceptualVolumeConstituentIndex(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ConceptualVolumeConstituentIndex.putUint16(value, pos);
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::Item::setSourceConceptualVolumeUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = SourceConceptualVolumeUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTSourceConceptualVolumeSequence::DRTSourceConceptualVolumeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTSourceConceptualVolumeSequence::DRTSourceConceptualVolumeSequence(const DRTSourceConceptualVolumeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTSourceConceptualVolumeSequence &DRTSourceConceptualVolumeSequence::operator=(const DRTSourceConceptualVolumeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTSourceConceptualVolumeSequence::~DRTSourceConceptualVolumeSequence()
+{
+    clear();
+}
+
+
+void DRTSourceConceptualVolumeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTSourceConceptualVolumeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTSourceConceptualVolumeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTSourceConceptualVolumeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTSourceConceptualVolumeSequence::Item &DRTSourceConceptualVolumeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::read(DcmItem &dataset,
+                                                    const OFString &card,
+                                                    const OFString &type,
+                                                    const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_SourceConceptualVolumeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_SourceConceptualVolumeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTSourceConceptualVolumeSequence::write(DcmItem &dataset,
+                                                     const OFString &card,
+                                                     const OFString &type,
+                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SourceConceptualVolumeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 90c8e9895e856f1c41b13a41bd4b509889ea25dd..1dc74c1fa78ac5c10d0e815dc0e9b13f13fd3f31 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTSeriesDescriptionCodeSequence::gotoFirstItem()
 OFCondition DRTSeriesDescriptionCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index ceb1dcd6d86dc28301019ad538f4a94c5f83b429..56cc49129bd03b88eb23b1331ff5694ff1cfa62d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -397,10 +397,12 @@ OFCondition DRTSetupDeviceSequence::gotoFirstItem()
 OFCondition DRTSetupDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 4bc3520cbf0dda8677ae80adf7f301db258deb7e..24a9896c2e992d69f71e315a5c8622eed8a72249 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -359,10 +359,12 @@ OFCondition DRTShieldingDeviceSequence::gotoFirstItem()
 OFCondition DRTShieldingDeviceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 519b48423ccc5b30ac4d5dd20c5e448a3e360e83..cdb29e2bd8c85cd7a1eec917a8d3d43d04655adc 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -279,10 +279,12 @@ OFCondition DRTSourceInstanceSequence::gotoFirstItem()
 OFCondition DRTSourceInstanceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index ce2fda10a18798b3925cc5cb2fd19482b519643a..bd445c9ee2ae961c0c4f01dbedc077a7846151e3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -400,10 +400,12 @@ OFCondition DRTSourceImageSequence::gotoFirstItem()
 OFCondition DRTSourceImageSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index f181258a498778b4a0809a091151d054ba53077f..0ccf780cca2bb0b59799ea32638d4325602599fa 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTSnoutSequence::gotoFirstItem()
 OFCondition DRTSnoutSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index b293c8cf6d78f3fb58e2d058b82e12f8d49c218f..cc637ca34be54b95be08fc318b7e8bbd916fad9f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoFirstItem()
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index ac21d60e26d12c96825e93b7e44fe20fa56a2f3e..16acda03caf1ea397a78343478f064a064909db5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -663,10 +663,12 @@ OFCondition DRTScheduledProtocolCodeSequence::gotoFirstItem()
 OFCondition DRTScheduledProtocolCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index c873b70889ef0156086dfa19f08f6171964c1da9..7b3f21d604abc401d8128f59b9ea3cfd94c3325d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourcePatientGroupIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -279,10 +279,12 @@ OFCondition DRTSourcePatientGroupIdentificationSequence::gotoFirstItem()
 OFCondition DRTSourcePatientGroupIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtsppcs.cc b/dcmrt/libsrc/drtsppcs.cc
new file mode 100644 (file)
index 0000000..df8c64f
--- /dev/null
@@ -0,0 +1,784 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTSourcePixelPlanesCharacteristicsSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtsppcs.h"
+
+
+// --- item class ---
+
+DRTSourcePixelPlanesCharacteristicsSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    Columns(DCM_Columns),
+    ImageOrientationPatient(DCM_ImageOrientationPatient),
+    ImagePositionPatient(DCM_ImagePositionPatient),
+    NumberOfFrames(DCM_NumberOfFrames),
+    PixelSpacing(DCM_PixelSpacing),
+    Rows(DCM_Rows),
+    SpacingBetweenSlices(DCM_SpacingBetweenSlices)
+{
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    Columns(copy.Columns),
+    ImageOrientationPatient(copy.ImageOrientationPatient),
+    ImagePositionPatient(copy.ImagePositionPatient),
+    NumberOfFrames(copy.NumberOfFrames),
+    PixelSpacing(copy.PixelSpacing),
+    Rows(copy.Rows),
+    SpacingBetweenSlices(copy.SpacingBetweenSlices)
+{
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::Item::~Item()
+{
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        Columns = copy.Columns;
+        ImageOrientationPatient = copy.ImageOrientationPatient;
+        ImagePositionPatient = copy.ImagePositionPatient;
+        NumberOfFrames = copy.NumberOfFrames;
+        PixelSpacing = copy.PixelSpacing;
+        Rows = copy.Rows;
+        SpacingBetweenSlices = copy.SpacingBetweenSlices;
+    }
+    return *this;
+}
+
+
+void DRTSourcePixelPlanesCharacteristicsSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        PixelSpacing.clear();
+        SpacingBetweenSlices.clear();
+        ImageOrientationPatient.clear();
+        ImagePositionPatient.clear();
+        NumberOfFrames.clear();
+        Rows.clear();
+        Columns.clear();
+    }
+}
+
+
+OFBool DRTSourcePixelPlanesCharacteristicsSequence::Item::isEmpty()
+{
+    return PixelSpacing.isEmpty() &&
+           SpacingBetweenSlices.isEmpty() &&
+           ImageOrientationPatient.isEmpty() &&
+           ImagePositionPatient.isEmpty() &&
+           NumberOfFrames.isEmpty() &&
+           Rows.isEmpty() &&
+           Columns.isEmpty();
+}
+
+
+OFBool DRTSourcePixelPlanesCharacteristicsSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, PixelSpacing, "2", "1", "SourcePixelPlanesCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, SpacingBetweenSlices, "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, ImageOrientationPatient, "6", "1", "SourcePixelPlanesCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, ImagePositionPatient, "3", "1", "SourcePixelPlanesCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, NumberOfFrames, "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, Rows, "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, Columns, "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmDecimalString(PixelSpacing), "2", "1", "SourcePixelPlanesCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmDecimalString(SpacingBetweenSlices), "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmDecimalString(ImageOrientationPatient), "6", "1", "SourcePixelPlanesCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmDecimalString(ImagePositionPatient), "3", "1", "SourcePixelPlanesCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmIntegerString(NumberOfFrames), "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(Rows), "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(Columns), "1", "1", "SourcePixelPlanesCharacteristicsSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getColumns(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, Columns).getUint16(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImageOrientationPatient(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ImageOrientationPatient, value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImageOrientationPatient(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ImageOrientationPatient).getFloat64(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImageOrientationPatient(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ImageOrientationPatient).getFloat64Vector(value);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImagePositionPatient(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ImagePositionPatient, value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImagePositionPatient(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ImagePositionPatient).getFloat64(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getImagePositionPatient(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, ImagePositionPatient).getFloat64Vector(value);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getNumberOfFrames(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(NumberOfFrames, value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getNumberOfFrames(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, NumberOfFrames).getSint32(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getPixelSpacing(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PixelSpacing, value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getPixelSpacing(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, PixelSpacing).getFloat64(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getPixelSpacing(OFVector<Float64> &value) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, PixelSpacing).getFloat64Vector(value);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getRows(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, Rows).getUint16(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getSpacingBetweenSlices(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(SpacingBetweenSlices, value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::getSpacingBetweenSlices(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, SpacingBetweenSlices).getFloat64(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setColumns(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return Columns.putUint16(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setImageOrientationPatient(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "6") : EC_Normal;
+        if (result.good())
+            result = ImageOrientationPatient.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setImagePositionPatient(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "3") : EC_Normal;
+        if (result.good())
+            result = ImagePositionPatient.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setNumberOfFrames(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = NumberOfFrames.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setPixelSpacing(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "2") : EC_Normal;
+        if (result.good())
+            result = PixelSpacing.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setRows(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return Rows.putUint16(value, pos);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::Item::setSpacingBetweenSlices(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = SpacingBetweenSlices.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTSourcePixelPlanesCharacteristicsSequence::DRTSourcePixelPlanesCharacteristicsSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::DRTSourcePixelPlanesCharacteristicsSequence(const DRTSourcePixelPlanesCharacteristicsSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence &DRTSourcePixelPlanesCharacteristicsSequence::operator=(const DRTSourcePixelPlanesCharacteristicsSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::~DRTSourcePixelPlanesCharacteristicsSequence()
+{
+    clear();
+}
+
+
+void DRTSourcePixelPlanesCharacteristicsSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTSourcePixelPlanesCharacteristicsSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTSourcePixelPlanesCharacteristicsSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTSourcePixelPlanesCharacteristicsSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTSourcePixelPlanesCharacteristicsSequence::Item &DRTSourcePixelPlanesCharacteristicsSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::read(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_SourcePixelPlanesCharacteristicsSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_SourcePixelPlanesCharacteristicsSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTSourcePixelPlanesCharacteristicsSequence::write(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_SourcePixelPlanesCharacteristicsSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 2f36d5d0b5920ea90e891893bb7f4dac4f0d3f50..82ffacd102cd59124762c683afea5729f5b7c7b3 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSegmentedPropertyTypeModifierCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoFirstItem()
 OFCondition DRTSegmentedPropertyTypeModifierCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index e0ef16cfe9c866edac11413d90f2de637bab3efb..aa857df5c1bddafeb87e7be4f8731d507b6a567a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -808,10 +808,12 @@ OFCondition DRTSourceSequence::gotoFirstItem()
 OFCondition DRTSourceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 3443bbfc31636f560349a1ea8c7ed07d03b457e7..f652cc3dd5bc609e9163d62ddc347a5f92d2dc68 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStrainSourceRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -656,10 +656,12 @@ OFCondition DRTStrainSourceRegistryCodeSequence::gotoFirstItem()
 OFCondition DRTStrainSourceRegistryCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 8d050cdeaf5137d21edc7edf611902f077ad38bd..dcdd23ebe112e63240f3df899da895026c9c640f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
 
 DRTStructureSetROISequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
+    ConceptualVolumeIdentificationSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    DefinitionSourceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     DerivationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    ROIDerivationAlgorithmIdentificationSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ROIDescription(DCM_ROIDescription),
     ROIGenerationAlgorithm(DCM_ROIGenerationAlgorithm),
     ROIGenerationDescription(DCM_ROIGenerationDescription),
@@ -35,7 +38,10 @@ DRTStructureSetROISequence::Item::Item(const OFBool emptyDefaultItem)
 
 DRTStructureSetROISequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
+    ConceptualVolumeIdentificationSequence(copy.ConceptualVolumeIdentificationSequence),
+    DefinitionSourceSequence(copy.DefinitionSourceSequence),
     DerivationCodeSequence(copy.DerivationCodeSequence),
+    ROIDerivationAlgorithmIdentificationSequence(copy.ROIDerivationAlgorithmIdentificationSequence),
     ROIDescription(copy.ROIDescription),
     ROIGenerationAlgorithm(copy.ROIGenerationAlgorithm),
     ROIGenerationDescription(copy.ROIGenerationDescription),
@@ -57,7 +63,10 @@ DRTStructureSetROISequence::Item &DRTStructureSetROISequence::Item::operator=(co
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
+        ConceptualVolumeIdentificationSequence = copy.ConceptualVolumeIdentificationSequence;
+        DefinitionSourceSequence = copy.DefinitionSourceSequence;
         DerivationCodeSequence = copy.DerivationCodeSequence;
+        ROIDerivationAlgorithmIdentificationSequence = copy.ROIDerivationAlgorithmIdentificationSequence;
         ROIDescription = copy.ROIDescription;
         ROIGenerationAlgorithm = copy.ROIGenerationAlgorithm;
         ROIGenerationDescription = copy.ROIGenerationDescription;
@@ -76,13 +85,16 @@ void DRTStructureSetROISequence::Item::clear()
     {
         /* clear all DICOM attributes */
         ROINumber.clear();
+        ConceptualVolumeIdentificationSequence.clear();
         ReferencedFrameOfReferenceUID.clear();
         ROIName.clear();
         ROIDescription.clear();
         ROIVolume.clear();
         ROIGenerationAlgorithm.clear();
         ROIGenerationDescription.clear();
+        ROIDerivationAlgorithmIdentificationSequence.clear();
         DerivationCodeSequence.clear();
+        DefinitionSourceSequence.clear();
     }
 }
 
@@ -90,13 +102,16 @@ void DRTStructureSetROISequence::Item::clear()
 OFBool DRTStructureSetROISequence::Item::isEmpty()
 {
     return ROINumber.isEmpty() &&
+           ConceptualVolumeIdentificationSequence.isEmpty() &&
            ReferencedFrameOfReferenceUID.isEmpty() &&
            ROIName.isEmpty() &&
            ROIDescription.isEmpty() &&
            ROIVolume.isEmpty() &&
            ROIGenerationAlgorithm.isEmpty() &&
            ROIGenerationDescription.isEmpty() &&
-           DerivationCodeSequence.isEmpty();
+           ROIDerivationAlgorithmIdentificationSequence.isEmpty() &&
+           DerivationCodeSequence.isEmpty() &&
+           DefinitionSourceSequence.isEmpty();
 }
 
 
@@ -114,13 +129,16 @@ OFCondition DRTStructureSetROISequence::Item::read(DcmItem &item)
         /* re-initialize object */
         clear();
         getAndCheckElementFromDataset(item, ROINumber, "1", "1", "StructureSetROISequence");
+        ConceptualVolumeIdentificationSequence.read(item, "1-n", "3", "StructureSetROISequence");
         getAndCheckElementFromDataset(item, ReferencedFrameOfReferenceUID, "1", "1", "StructureSetROISequence");
         getAndCheckElementFromDataset(item, ROIName, "1", "2", "StructureSetROISequence");
         getAndCheckElementFromDataset(item, ROIDescription, "1", "3", "StructureSetROISequence");
         getAndCheckElementFromDataset(item, ROIVolume, "1", "3", "StructureSetROISequence");
         getAndCheckElementFromDataset(item, ROIGenerationAlgorithm, "1", "2", "StructureSetROISequence");
         getAndCheckElementFromDataset(item, ROIGenerationDescription, "1", "3", "StructureSetROISequence");
+        ROIDerivationAlgorithmIdentificationSequence.read(item, "1-n", "3", "StructureSetROISequence");
         DerivationCodeSequence.read(item, "1-n", "3", "StructureSetROISequence");
+        DefinitionSourceSequence.read(item, "1-n", "3", "StructureSetROISequence");
         result = EC_Normal;
     }
     return result;
@@ -134,13 +152,16 @@ OFCondition DRTStructureSetROISequence::Item::write(DcmItem &item)
     {
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ROINumber), "1", "1", "StructureSetROISequence");
+        if (result.good()) result = ConceptualVolumeIdentificationSequence.write(item, "1-n", "3", "StructureSetROISequence");
         addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedFrameOfReferenceUID), "1", "1", "StructureSetROISequence");
         addElementToDataset(result, item, new DcmLongString(ROIName), "1", "2", "StructureSetROISequence");
         addElementToDataset(result, item, new DcmShortText(ROIDescription), "1", "3", "StructureSetROISequence");
         addElementToDataset(result, item, new DcmDecimalString(ROIVolume), "1", "3", "StructureSetROISequence");
         addElementToDataset(result, item, new DcmCodeString(ROIGenerationAlgorithm), "1", "2", "StructureSetROISequence");
         addElementToDataset(result, item, new DcmLongString(ROIGenerationDescription), "1", "3", "StructureSetROISequence");
+        if (result.good()) result = ROIDerivationAlgorithmIdentificationSequence.write(item, "1-n", "3", "StructureSetROISequence");
         if (result.good()) result = DerivationCodeSequence.write(item, "1-n", "3", "StructureSetROISequence");
+        if (result.good()) result = DefinitionSourceSequence.write(item, "1-n", "3", "StructureSetROISequence");
     }
     return result;
 }
@@ -442,10 +463,12 @@ OFCondition DRTStructureSetROISequence::gotoFirstItem()
 OFCondition DRTStructureSetROISequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index a50e49a2437fcf7bba420eb838631579fe954bda..650a2f9f5f4e978845d9079340e5950962e1fb19 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStrainStockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -279,10 +279,12 @@ OFCondition DRTStrainStockSequence::gotoFirstItem()
 OFCondition DRTStrainStockSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 0e48bbe7c4cd9b68d12e3188d76e15e7a7a40e68..6670863f3e34bd186f819d7c39064663385c996d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     PatientID(DCM_PatientID),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
+    TypeOfPatientID(DCM_TypeOfPatientID),
     PatientBirthDate(DCM_PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
@@ -78,6 +79,7 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     PhysiciansOfRecordIdentificationSequence(),
     NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(),
+    RequestingService(DCM_RequestingService),
     RequestingServiceCodeSequence(),
     ReferencedStudySequence(),
     ProcedureCodeSequence(),
@@ -101,12 +103,15 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
     IssuerOfAdmissionIDSequence(),
+    ReasonForVisit(DCM_ReasonForVisit),
+    ReasonForVisitCodeSequence(),
     ServiceEpisodeID(DCM_ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(),
     ServiceEpisodeDescription(DCM_ServiceEpisodeDescription),
     PatientSexNeutered(DCM_PatientSexNeutered),
     ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(),
     LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(),
@@ -129,6 +134,7 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(),
     CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(DCM_TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription),
@@ -137,11 +143,14 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     InstitutionAddress(DCM_InstitutionAddress),
     StationName(DCM_StationName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
     UDISequence(),
+    DeviceUID(DCM_DeviceUID),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -197,6 +206,10 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
     PrivateDataElementCharacteristicsSequence(),
+    InstanceOriginStatus(DCM_InstanceOriginStatus),
+    BarcodeValue(DCM_BarcodeValue),
+    ReferencedDefinedProtocolSequence(),
+    ReferencedPerformedProtocolSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -210,6 +223,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     PatientID(copy.PatientID),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
+    TypeOfPatientID(copy.TypeOfPatientID),
     PatientBirthDate(copy.PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
@@ -266,6 +280,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence),
     NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence),
+    RequestingService(copy.RequestingService),
     RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence),
     ReferencedStudySequence(copy.ReferencedStudySequence),
     ProcedureCodeSequence(copy.ProcedureCodeSequence),
@@ -289,12 +304,15 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
     IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence),
+    ReasonForVisit(copy.ReasonForVisit),
+    ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence),
     ServiceEpisodeID(copy.ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence),
     ServiceEpisodeDescription(copy.ServiceEpisodeDescription),
     PatientSexNeutered(copy.PatientSexNeutered),
     ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence),
     LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence),
@@ -317,6 +335,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence),
     CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(copy.TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription),
@@ -325,11 +344,14 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     InstitutionAddress(copy.InstitutionAddress),
     StationName(copy.StationName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
     UDISequence(copy.UDISequence),
+    DeviceUID(copy.DeviceUID),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -385,6 +407,10 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
     PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
+    InstanceOriginStatus(copy.InstanceOriginStatus),
+    BarcodeValue(copy.BarcodeValue),
+    ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence),
+    ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -404,6 +430,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         PatientID = copy.PatientID;
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
+        TypeOfPatientID = copy.TypeOfPatientID;
         PatientBirthDate = copy.PatientBirthDate;
         PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
         PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
@@ -460,6 +487,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence;
         NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy;
         PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence;
+        RequestingService = copy.RequestingService;
         RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence;
         ReferencedStudySequence = copy.ReferencedStudySequence;
         ProcedureCodeSequence = copy.ProcedureCodeSequence;
@@ -483,12 +511,15 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
         IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence;
+        ReasonForVisit = copy.ReasonForVisit;
+        ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence;
         ServiceEpisodeID = copy.ServiceEpisodeID;
         IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence;
         ServiceEpisodeDescription = copy.ServiceEpisodeDescription;
         PatientSexNeutered = copy.PatientSexNeutered;
         ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID;
         ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription;
+        ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence;
         LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent;
         LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType;
         ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence;
@@ -511,6 +542,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription;
         PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence;
         CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep;
+        TreatmentSessionUID = copy.TreatmentSessionUID;
         ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName;
         ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID;
         ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription;
@@ -519,11 +551,14 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         InstitutionAddress = copy.InstitutionAddress;
         StationName = copy.StationName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
         UDISequence = copy.UDISequence;
+        DeviceUID = copy.DeviceUID;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -579,6 +614,10 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
         PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
+        InstanceOriginStatus = copy.InstanceOriginStatus;
+        BarcodeValue = copy.BarcodeValue;
+        ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence;
+        ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -593,6 +632,7 @@ void DRTStructureSetIOD::clear()
     PatientID.clear();
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
+    TypeOfPatientID.clear();
     PatientBirthDate.clear();
     PatientBirthDateInAlternativeCalendar.clear();
     PatientDeathDateInAlternativeCalendar.clear();
@@ -649,6 +689,7 @@ void DRTStructureSetIOD::clear()
     PhysiciansOfRecordIdentificationSequence.clear();
     NameOfPhysiciansReadingStudy.clear();
     PhysiciansReadingStudyIdentificationSequence.clear();
+    RequestingService.clear();
     RequestingServiceCodeSequence.clear();
     ReferencedStudySequence.clear();
     ProcedureCodeSequence.clear();
@@ -672,12 +713,15 @@ void DRTStructureSetIOD::clear()
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
     IssuerOfAdmissionIDSequence.clear();
+    ReasonForVisit.clear();
+    ReasonForVisitCodeSequence.clear();
     ServiceEpisodeID.clear();
     IssuerOfServiceEpisodeIDSequence.clear();
     ServiceEpisodeDescription.clear();
     PatientSexNeutered.clear();
     ClinicalTrialTimePointID.clear();
     ClinicalTrialTimePointDescription.clear();
+    ClinicalTrialTimePointTypeCodeSequence.clear();
     LongitudinalTemporalOffsetFromEvent.clear();
     LongitudinalTemporalEventType.clear();
     ConsentForClinicalTrialUseSequence.clear();
@@ -700,6 +744,7 @@ void DRTStructureSetIOD::clear()
     PerformedProcedureStepDescription.clear();
     PerformedProtocolCodeSequence.clear();
     CommentsOnThePerformedProcedureStep.clear();
+    TreatmentSessionUID.clear();
     ClinicalTrialCoordinatingCenterName.clear();
     ClinicalTrialSeriesID.clear();
     ClinicalTrialSeriesDescription.clear();
@@ -708,11 +753,14 @@ void DRTStructureSetIOD::clear()
     InstitutionAddress.clear();
     StationName.clear();
     InstitutionalDepartmentName.clear();
+    InstitutionalDepartmentTypeCodeSequence.clear();
     ManufacturerModelName.clear();
+    ManufacturerDeviceClassUID.clear();
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
     UDISequence.clear();
+    DeviceUID.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -768,6 +816,10 @@ void DRTStructureSetIOD::clear()
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
     PrivateDataElementCharacteristicsSequence.clear();
+    InstanceOriginStatus.clear();
+    BarcodeValue.clear();
+    ReferencedDefinedProtocolSequence.clear();
+    ReferencedPerformedProtocolSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -823,11 +875,14 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule");
+        InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
         UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -905,6 +960,10 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
         PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule");
+        ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
+        ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -923,6 +982,7 @@ OFCondition DRTStructureSetIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
@@ -999,6 +1059,7 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset)
         PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule");
         PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule");
         RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1024,6 +1085,8 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
         IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule");
+        ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule");
         IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule");
@@ -1034,6 +1097,7 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule");
+            ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule");
             ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
@@ -1069,6 +1133,7 @@ OFCondition DRTStructureSetIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule");
         PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName))
@@ -1096,6 +1161,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
@@ -1159,6 +1225,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule");
         if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule");
         if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1186,6 +1253,8 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule");
+            if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule");
@@ -1197,6 +1266,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule");
+            if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule");
             if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
@@ -1222,6 +1292,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/))
@@ -1237,11 +1308,14 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
         if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1321,6 +1395,10 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
         if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule");
+        if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
+        if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1378,6 +1456,8 @@ OFBool DRTStructureSetIOD::isPatientStudyModulePresent(const OFBool /*complete*/
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
            !IssuerOfAdmissionIDSequence.isEmpty() ||
+           !ReasonForVisit.isEmpty() ||
+           !ReasonForVisitCodeSequence.isEmpty() ||
            !ServiceEpisodeID.isEmpty() ||
            !IssuerOfServiceEpisodeIDSequence.isEmpty() ||
            !ServiceEpisodeDescription.isEmpty() ||
@@ -1390,6 +1470,7 @@ OFBool DRTStructureSetIOD::isClinicalTrialStudyModulePresent(const OFBool /*comp
     /* check whether at least one attribute is present */
     return !ClinicalTrialTimePointID.isEmpty() ||
            !ClinicalTrialTimePointDescription.isEmpty() ||
+           !ClinicalTrialTimePointTypeCodeSequence.isEmpty() ||
            !LongitudinalTemporalOffsetFromEvent.isEmpty() ||
            !LongitudinalTemporalEventType.isEmpty() ||
            !ConsentForClinicalTrialUseSequence.isEmpty();
@@ -1497,6 +1578,12 @@ OFCondition DRTStructureSetIOD::getAuthorizationEquipmentCertificationNumber(OFS
 }
 
 
+OFCondition DRTStructureSetIOD::getBarcodeValue(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(BarcodeValue, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos);
@@ -1623,6 +1710,12 @@ OFCondition DRTStructureSetIOD::getDeviceSerialNumber(OFString &value, const sig
 }
 
 
+OFCondition DRTStructureSetIOD::getDeviceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getEthnicGroup(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EthnicGroup, value, pos);
@@ -1677,6 +1770,12 @@ OFCondition DRTStructureSetIOD::getInstanceNumber(Sint32 &value, const unsigned
 }
 
 
+OFCondition DRTStructureSetIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(InstanceOriginStatus, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstitutionAddress, value, pos);
@@ -1731,6 +1830,12 @@ OFCondition DRTStructureSetIOD::getManufacturer(OFString &value, const signed lo
 }
 
 
+OFCondition DRTStructureSetIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getManufacturerModelName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ManufacturerModelName, value, pos);
@@ -2001,6 +2106,12 @@ OFCondition DRTStructureSetIOD::getQueryRetrieveView(OFString &value, const sign
 }
 
 
+OFCondition DRTStructureSetIOD::getReasonForVisit(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ReasonForVisit, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getReferringPhysicianName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ReferringPhysicianName, value, pos);
@@ -2013,6 +2124,12 @@ OFCondition DRTStructureSetIOD::getRelatedGeneralSOPClassUID(OFString &value, co
 }
 
 
+OFCondition DRTStructureSetIOD::getRequestingService(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(RequestingService, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getResponsibleOrganization(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ResponsibleOrganization, value, pos);
@@ -2253,6 +2370,18 @@ OFCondition DRTStructureSetIOD::getTimezoneOffsetFromUTC(OFString &value, const
 }
 
 
+OFCondition DRTStructureSetIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TreatmentSessionUID, value, pos);
+}
+
+
+OFCondition DRTStructureSetIOD::getTypeOfPatientID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TypeOfPatientID, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::setAccessionNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2316,6 +2445,15 @@ OFCondition DRTStructureSetIOD::setAuthorizationEquipmentCertificationNumber(con
 }
 
 
+OFCondition DRTStructureSetIOD::setBarcodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = BarcodeValue.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2505,6 +2643,15 @@ OFCondition DRTStructureSetIOD::setDeviceSerialNumber(const OFString &value, con
 }
 
 
+OFCondition DRTStructureSetIOD::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = DeviceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setEthnicGroup(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2577,6 +2724,15 @@ OFCondition DRTStructureSetIOD::setInstanceNumber(const OFString &value, const O
 }
 
 
+OFCondition DRTStructureSetIOD::setInstanceOriginStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = InstanceOriginStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -2655,6 +2811,15 @@ OFCondition DRTStructureSetIOD::setManufacturer(const OFString &value, const OFB
 }
 
 
+OFCondition DRTStructureSetIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ManufacturerDeviceClassUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setManufacturerModelName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3009,6 +3174,15 @@ OFCondition DRTStructureSetIOD::setQueryRetrieveView(const OFString &value, cons
 }
 
 
+OFCondition DRTStructureSetIOD::setReasonForVisit(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = ReasonForVisit.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setReferringPhysicianName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal;
@@ -3027,6 +3201,15 @@ OFCondition DRTStructureSetIOD::setRelatedGeneralSOPClassUID(const OFString &val
 }
 
 
+OFCondition DRTStructureSetIOD::setRequestingService(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = RequestingService.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setResponsibleOrganization(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3369,4 +3552,22 @@ OFCondition DRTStructureSetIOD::setTimezoneOffsetFromUTC(const OFString &value,
 }
 
 
+OFCondition DRTStructureSetIOD::setTreatmentSessionUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSessionUID.putOFStringArray(value);
+    return result;
+}
+
+
+OFCondition DRTStructureSetIOD::setTypeOfPatientID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TypeOfPatientID.putOFStringArray(value);
+    return result;
+}
+
+
 // end of source file
diff --git a/dcmrt/libsrc/drttms0.cc b/dcmrt/libsrc/drttms0.cc
deleted file mode 100644 (file)
index 3027753..0000000
+++ /dev/null
@@ -1,718 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drttms0.h"
-
-
-// --- item class ---
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    DeviceSerialNumber(DCM_DeviceSerialNumber),
-    InstitutionAddress(DCM_InstitutionAddress),
-    InstitutionName(DCM_InstitutionName),
-    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
-    Manufacturer(DCM_Manufacturer),
-    ManufacturerModelName(DCM_ManufacturerModelName),
-    TreatmentMachineName(DCM_TreatmentMachineName)
-{
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    DeviceSerialNumber(copy.DeviceSerialNumber),
-    InstitutionAddress(copy.InstitutionAddress),
-    InstitutionName(copy.InstitutionName),
-    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
-    Manufacturer(copy.Manufacturer),
-    ManufacturerModelName(copy.ManufacturerModelName),
-    TreatmentMachineName(copy.TreatmentMachineName)
-{
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::~Item()
-{
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        DeviceSerialNumber = copy.DeviceSerialNumber;
-        InstitutionAddress = copy.InstitutionAddress;
-        InstitutionName = copy.InstitutionName;
-        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
-        Manufacturer = copy.Manufacturer;
-        ManufacturerModelName = copy.ManufacturerModelName;
-        TreatmentMachineName = copy.TreatmentMachineName;
-    }
-    return *this;
-}
-
-
-void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        TreatmentMachineName.clear();
-        Manufacturer.clear();
-        InstitutionName.clear();
-        InstitutionAddress.clear();
-        InstitutionalDepartmentName.clear();
-        ManufacturerModelName.clear();
-        DeviceSerialNumber.clear();
-    }
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isEmpty()
-{
-    return TreatmentMachineName.isEmpty() &&
-           Manufacturer.isEmpty() &&
-           InstitutionName.isEmpty() &&
-           InstitutionAddress.isEmpty() &&
-           InstitutionalDepartmentName.isEmpty() &&
-           ManufacturerModelName.isEmpty() &&
-           DeviceSerialNumber.isEmpty();
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, Manufacturer, "1", "2", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, InstitutionName, "1", "2", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "2", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "2", "TreatmentMachineSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "2", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "2", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "2", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "2", "TreatmentMachineSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(DeviceSerialNumber, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(InstitutionAddress, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(InstitutionName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturer(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(Manufacturer, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ManufacturerModelName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TreatmentMachineName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = DeviceSerialNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionAddress(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
-        if (result.good())
-            result = InstitutionAddress.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = InstitutionName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = InstitutionalDepartmentName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturer(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = Manufacturer.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturerModelName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ManufacturerModelName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TreatmentMachineName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule()
-{
-    clear();
-}
-
-
-void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::read(DcmItem &dataset,
-                                                                              const OFString &card,
-                                                                              const OFString &type,
-                                                                              const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_TreatmentMachineSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::write(DcmItem &dataset,
-                                                                               const OFString &card,
-                                                                               const OFString &type,
-                                                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drttms1.cc b/dcmrt/libsrc/drttms1.cc
new file mode 100644 (file)
index 0000000..c74c180
--- /dev/null
@@ -0,0 +1,727 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drttms1.h"
+
+
+// --- item class ---
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    DeviceSerialNumber(DCM_DeviceSerialNumber),
+    InstitutionAddress(DCM_InstitutionAddress),
+    InstitutionName(DCM_InstitutionName),
+    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    Manufacturer(DCM_Manufacturer),
+    ManufacturerModelName(DCM_ManufacturerModelName),
+    TreatmentMachineName(DCM_TreatmentMachineName)
+{
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    DeviceSerialNumber(copy.DeviceSerialNumber),
+    InstitutionAddress(copy.InstitutionAddress),
+    InstitutionName(copy.InstitutionName),
+    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
+    Manufacturer(copy.Manufacturer),
+    ManufacturerModelName(copy.ManufacturerModelName),
+    TreatmentMachineName(copy.TreatmentMachineName)
+{
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::~Item()
+{
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        DeviceSerialNumber = copy.DeviceSerialNumber;
+        InstitutionAddress = copy.InstitutionAddress;
+        InstitutionName = copy.InstitutionName;
+        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
+        Manufacturer = copy.Manufacturer;
+        ManufacturerModelName = copy.ManufacturerModelName;
+        TreatmentMachineName = copy.TreatmentMachineName;
+    }
+    return *this;
+}
+
+
+void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        TreatmentMachineName.clear();
+        Manufacturer.clear();
+        InstitutionName.clear();
+        InstitutionAddress.clear();
+        InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
+        ManufacturerModelName.clear();
+        DeviceSerialNumber.clear();
+    }
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty()
+{
+    return TreatmentMachineName.isEmpty() &&
+           Manufacturer.isEmpty() &&
+           InstitutionName.isEmpty() &&
+           InstitutionAddress.isEmpty() &&
+           InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty() &&
+           ManufacturerModelName.isEmpty() &&
+           DeviceSerialNumber.isEmpty();
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, Manufacturer, "1", "3", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "TreatmentMachineSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "3", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "TreatmentMachineSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceSerialNumber, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionAddress, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturer(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(Manufacturer, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ManufacturerModelName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TreatmentMachineName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeviceSerialNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionAddress(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = InstitutionAddress.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionalDepartmentName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturer(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = Manufacturer.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturerModelName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ManufacturerModelName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TreatmentMachineName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule()
+{
+    clear();
+}
+
+
+void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset,
+                                                                               const OFString &card,
+                                                                               const OFString &type,
+                                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_TreatmentMachineSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset,
+                                                                                const OFString &card,
+                                                                                const OFString &type,
+                                                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drttms2.cc b/dcmrt/libsrc/drttms2.cc
new file mode 100644 (file)
index 0000000..dc265e9
--- /dev/null
@@ -0,0 +1,727 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drttms2.h"
+
+
+// --- item class ---
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    DeviceSerialNumber(DCM_DeviceSerialNumber),
+    InstitutionAddress(DCM_InstitutionAddress),
+    InstitutionName(DCM_InstitutionName),
+    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    Manufacturer(DCM_Manufacturer),
+    ManufacturerModelName(DCM_ManufacturerModelName),
+    TreatmentMachineName(DCM_TreatmentMachineName)
+{
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    DeviceSerialNumber(copy.DeviceSerialNumber),
+    InstitutionAddress(copy.InstitutionAddress),
+    InstitutionName(copy.InstitutionName),
+    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
+    Manufacturer(copy.Manufacturer),
+    ManufacturerModelName(copy.ManufacturerModelName),
+    TreatmentMachineName(copy.TreatmentMachineName)
+{
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::~Item()
+{
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        DeviceSerialNumber = copy.DeviceSerialNumber;
+        InstitutionAddress = copy.InstitutionAddress;
+        InstitutionName = copy.InstitutionName;
+        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
+        Manufacturer = copy.Manufacturer;
+        ManufacturerModelName = copy.ManufacturerModelName;
+        TreatmentMachineName = copy.TreatmentMachineName;
+    }
+    return *this;
+}
+
+
+void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        TreatmentMachineName.clear();
+        Manufacturer.clear();
+        InstitutionName.clear();
+        InstitutionAddress.clear();
+        InstitutionalDepartmentName.clear();
+        InstitutionalDepartmentTypeCodeSequence.clear();
+        ManufacturerModelName.clear();
+        DeviceSerialNumber.clear();
+    }
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isEmpty()
+{
+    return TreatmentMachineName.isEmpty() &&
+           Manufacturer.isEmpty() &&
+           InstitutionName.isEmpty() &&
+           InstitutionAddress.isEmpty() &&
+           InstitutionalDepartmentName.isEmpty() &&
+           InstitutionalDepartmentTypeCodeSequence.isEmpty() &&
+           ManufacturerModelName.isEmpty() &&
+           DeviceSerialNumber.isEmpty();
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, Manufacturer, "1", "2", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, InstitutionName, "1", "2", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence");
+        InstitutionalDepartmentTypeCodeSequence.read(item, "1-n", "3", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "2", "TreatmentMachineSequence");
+        getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "2", "TreatmentMachineSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "2", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "2", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(item, "1-n", "3", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "2", "TreatmentMachineSequence");
+        addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "2", "TreatmentMachineSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(DeviceSerialNumber, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionAddress, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturer(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(Manufacturer, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ManufacturerModelName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(TreatmentMachineName, value, pos);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = DeviceSerialNumber.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionAddress(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = InstitutionAddress.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = InstitutionalDepartmentName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturer(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = Manufacturer.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setManufacturerModelName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ManufacturerModelName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = TreatmentMachineName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator=(const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::~DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule()
+{
+    clear();
+}
+
+
+void DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::Item &DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::read(DcmItem &dataset,
+                                                                              const OFString &card,
+                                                                              const OFString &type,
+                                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_TreatmentMachineSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule::write(DcmItem &dataset,
+                                                                               const OFString &card,
+                                                                               const OFString &type,
+                                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
diff --git a/dcmrt/libsrc/drttms9.cc b/dcmrt/libsrc/drttms9.cc
deleted file mode 100644 (file)
index 1d7aa4f..0000000
+++ /dev/null
@@ -1,718 +0,0 @@
-/*
- *
- *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
- *  All rights reserved.  See COPYRIGHT file for details.
- *
- *  Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
- *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
-
-#include "dcmtk/dcmrt/seq/drttms9.h"
-
-
-// --- item class ---
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const OFBool emptyDefaultItem)
-  : EmptyDefaultItem(emptyDefaultItem),
-    DeviceSerialNumber(DCM_DeviceSerialNumber),
-    InstitutionAddress(DCM_InstitutionAddress),
-    InstitutionName(DCM_InstitutionName),
-    InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
-    Manufacturer(DCM_Manufacturer),
-    ManufacturerModelName(DCM_ManufacturerModelName),
-    TreatmentMachineName(DCM_TreatmentMachineName)
-{
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::Item(const Item &copy)
-  : EmptyDefaultItem(copy.EmptyDefaultItem),
-    DeviceSerialNumber(copy.DeviceSerialNumber),
-    InstitutionAddress(copy.InstitutionAddress),
-    InstitutionName(copy.InstitutionName),
-    InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
-    Manufacturer(copy.Manufacturer),
-    ManufacturerModelName(copy.ManufacturerModelName),
-    TreatmentMachineName(copy.TreatmentMachineName)
-{
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::~Item()
-{
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::operator=(const Item &copy)
-{
-    if (this != &copy)
-    {
-        EmptyDefaultItem = copy.EmptyDefaultItem;
-        DeviceSerialNumber = copy.DeviceSerialNumber;
-        InstitutionAddress = copy.InstitutionAddress;
-        InstitutionName = copy.InstitutionName;
-        InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
-        Manufacturer = copy.Manufacturer;
-        ManufacturerModelName = copy.ManufacturerModelName;
-        TreatmentMachineName = copy.TreatmentMachineName;
-    }
-    return *this;
-}
-
-
-void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::clear()
-{
-    if (!EmptyDefaultItem)
-    {
-        /* clear all DICOM attributes */
-        TreatmentMachineName.clear();
-        Manufacturer.clear();
-        InstitutionName.clear();
-        InstitutionAddress.clear();
-        InstitutionalDepartmentName.clear();
-        ManufacturerModelName.clear();
-        DeviceSerialNumber.clear();
-    }
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isEmpty()
-{
-    return TreatmentMachineName.isEmpty() &&
-           Manufacturer.isEmpty() &&
-           InstitutionName.isEmpty() &&
-           InstitutionAddress.isEmpty() &&
-           InstitutionalDepartmentName.isEmpty() &&
-           ManufacturerModelName.isEmpty() &&
-           DeviceSerialNumber.isEmpty();
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::isValid() const
-{
-    return !EmptyDefaultItem;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::read(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        /* re-initialize object */
-        clear();
-        getAndCheckElementFromDataset(item, TreatmentMachineName, "1", "2", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, Manufacturer, "1", "3", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, InstitutionName, "1", "3", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, InstitutionalDepartmentName, "1", "3", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, ManufacturerModelName, "1", "3", "TreatmentMachineSequence");
-        getAndCheckElementFromDataset(item, DeviceSerialNumber, "1", "3", "TreatmentMachineSequence");
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::write(DcmItem &item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(TreatmentMachineName), "1", "2", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(Manufacturer), "1", "3", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "3", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(InstitutionalDepartmentName), "1", "3", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(ManufacturerModelName), "1", "3", "TreatmentMachineSequence");
-        addElementToDataset(result, item, new DcmLongString(DeviceSerialNumber), "1", "3", "TreatmentMachineSequence");
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getDeviceSerialNumber(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(DeviceSerialNumber, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionAddress(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(InstitutionAddress, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(InstitutionName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getInstitutionalDepartmentName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(InstitutionalDepartmentName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturer(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(Manufacturer, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getManufacturerModelName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ManufacturerModelName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::getTreatmentMachineName(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(TreatmentMachineName, value, pos);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setDeviceSerialNumber(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = DeviceSerialNumber.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionAddress(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
-        if (result.good())
-            result = InstitutionAddress.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = InstitutionName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setInstitutionalDepartmentName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = InstitutionalDepartmentName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturer(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = Manufacturer.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setManufacturerModelName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ManufacturerModelName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item::setTreatmentMachineName(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = TreatmentMachineName.putOFStringArray(value);
-    }
-    return result;
-}
-
-
-// --- sequence class ---
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const OFBool emptyDefaultSequence)
-  : EmptyDefaultSequence(emptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    CurrentItem = SequenceOfItems.end();
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy)
-  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
-    SequenceOfItems(),
-    CurrentItem(),
-    EmptyItem(OFTrue /*emptyDefaultItem*/)
-{
-    /* create a copy of the internal sequence of items */
-    Item *item = NULL;
-    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-    while (current != last)
-    {
-        item = new Item(**current);
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-        } else {
-            /* memory exhausted, there is nothing we can do about it */
-            break;
-        }
-        ++current;
-    }
-    CurrentItem = SequenceOfItems.begin();
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator=(const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule &copy)
-{
-    if (this != &copy)
-    {
-        clear();
-        EmptyDefaultSequence = copy.EmptyDefaultSequence;
-        /* create a copy of the internal sequence of items */
-        Item *item = NULL;
-        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
-        while (current != last)
-        {
-            item = new Item(**current);
-            if (item != NULL)
-            {
-                SequenceOfItems.push_back(item);
-            } else {
-                /* memory exhausted, there is nothing we can do about it */
-                break;
-            }
-            ++current;
-        }
-        CurrentItem = SequenceOfItems.begin();
-    }
-    return *this;
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::~DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule()
-{
-    clear();
-}
-
-
-void DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::clear()
-{
-    if (!EmptyDefaultSequence)
-    {
-        CurrentItem = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        /* delete all items and free memory */
-        while (CurrentItem != last)
-        {
-            delete (*CurrentItem);
-            CurrentItem = SequenceOfItems.erase(CurrentItem);
-        }
-        /* make sure that the list is empty */
-        SequenceOfItems.clear();
-        CurrentItem = SequenceOfItems.end();
-    }
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isEmpty()
-{
-    return SequenceOfItems.empty();
-}
-
-
-OFBool DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::isValid() const
-{
-    return !EmptyDefaultSequence;
-}
-
-
-size_t DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getNumberOfItems() const
-{
-    return SequenceOfItems.size();
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoFirstItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        CurrentItem = SequenceOfItems.begin();
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoNextItem()
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        ++CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (!SequenceOfItems.empty())
-    {
-        size_t idx = num + 1;
-        iterator = SequenceOfItems.begin();
-        const OFListConstIterator(Item *) last = SequenceOfItems.end();
-        while ((--idx > 0) && (iterator != last))
-            ++iterator;
-        /* specified list item found? */
-        if ((idx == 0) && (iterator != last))
-            result = EC_Normal;
-        else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::gotoItem(const size_t num)
-{
-    return gotoItem(num, CurrentItem);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem(Item *&item) const
-{
-    OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
-    {
-        item = *CurrentItem;
-        result = EC_Normal;
-    }
-    return result;
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem()
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getCurrentItem() const
-{
-    if (CurrentItem != SequenceOfItems.end())
-        return **CurrentItem;
-    else
-        return EmptyItem;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num, Item *&item)
-{
-    OFListIterator(Item *) iterator;
-    OFCondition result = gotoItem(num, iterator);
-    if (result.good())
-        item = *iterator;
-    return result;
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num)
-{
-    OFListIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::getItem(const size_t num) const
-{
-    OFListConstIterator(Item *) iterator;
-    if (gotoItem(num, iterator).good())
-        return **iterator;
-    else
-        return EmptyItem;
-}
-
-
-DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num)
-{
-    return getItem(num);
-}
-
-
-const DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::Item &DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::operator[](const size_t num) const
-{
-    return getItem(num);
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::addItem(Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        item = new Item();
-        if (item != NULL)
-        {
-            SequenceOfItems.push_back(item);
-            result = EC_Normal;
-        } else
-            result = EC_MemoryExhausted;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::insertItem(const size_t pos, Item *&item)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        result = gotoItem(pos, iterator);
-        if (result.good())
-        {
-            item = new Item();
-            if (item != NULL)
-            {
-                SequenceOfItems.insert(iterator, 1, item);
-                result = EC_Normal;
-            } else
-                result = EC_MemoryExhausted;
-        } else
-            result = addItem(item);
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::removeItem(const size_t pos)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        OFListIterator(Item *) iterator;
-        if (gotoItem(pos, iterator).good())
-        {
-            delete *iterator;
-            iterator = SequenceOfItems.erase(iterator);
-            result = EC_Normal;
-        } else
-            result = EC_IllegalParameter;
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::read(DcmItem &dataset,
-                                                                               const OFString &card,
-                                                                               const OFString &type,
-                                                                               const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        /* re-initialize object */
-        clear();
-        /* retrieve sequence element from dataset */
-        DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_TreatmentMachineSequence, sequence);
-        if (sequence != NULL)
-        {
-            if (checkElementValue(*sequence, card, type, result, moduleName))
-            {
-                DcmStack stack;
-                OFBool first = OFTrue;
-                /* iterate over all sequence items */
-                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
-                {
-                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
-                    if (ditem != NULL)
-                    {
-                        Item *item = new Item();
-                        if (item != NULL)
-                        {
-                            result = item->read(*ditem);
-                            if (result.good())
-                            {
-                                /* append new item to the end of the list */
-                                SequenceOfItems.push_back(item);
-                                first = OFFalse;
-                            }
-                        } else
-                            result = EC_MemoryExhausted;
-                    } else
-                        result = EC_CorruptedData;
-                }
-            }
-        } else {
-            DcmSequenceOfItems element(DCM_TreatmentMachineSequence);
-            checkElementValue(element, card, type, result, moduleName);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule::write(DcmItem &dataset,
-                                                                                const OFString &card,
-                                                                                const OFString &type,
-                                                                                const char *moduleName)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultSequence)
-    {
-        result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentMachineSequence);
-        if (sequence != NULL)
-        {
-            result = EC_Normal;
-            /* an empty optional sequence is not written */
-            if ((type == "2") || !SequenceOfItems.empty())
-            {
-                OFListIterator(Item *) iterator = SequenceOfItems.begin();
-                const OFListConstIterator(Item *) last = SequenceOfItems.end();
-                /* iterate over all sequence items */
-                while (result.good() && (iterator != last))
-                {
-                    DcmItem *item = new DcmItem();
-                    if (item != NULL)
-                    {
-                        /* append new item to the end of the sequence */
-                        result = sequence->append(item);
-                        if (result.good())
-                        {
-                            result = (*iterator)->write(*item);
-                            ++iterator;
-                        } else
-                            delete item;
-                    } else
-                        result = EC_MemoryExhausted;
-                }
-                if (result.good())
-                {
-                    /* insert sequence element into the dataset */
-                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
-                }
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-                if (result.good())
-                {
-                    /* forget reference to sequence object (avoid deletion below) */
-                    sequence = NULL;
-                }
-            }
-            else if (type == "1")
-            {
-                /* empty type 1 sequence not allowed */
-                result = RT_EC_InvalidValue;
-                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
-                    checkElementValue(*sequence, card, type, result, moduleName);
-            }
-            /* delete sequence (if not inserted into the dataset) */
-            delete sequence;
-        }
-    }
-    return result;
-}
-
-
-// end of source file
diff --git a/dcmrt/libsrc/drttrccs.cc b/dcmrt/libsrc/drttrccs.cc
new file mode 100644 (file)
index 0000000..0c45b90
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTTherapeuticRoleCategoryCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drttrccs.h"
+
+
+// --- item class ---
+
+DRTTherapeuticRoleCategoryCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::Item::~Item()
+{
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTTherapeuticRoleCategoryCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTTherapeuticRoleCategoryCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTTherapeuticRoleCategoryCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "TherapeuticRoleCategoryCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTTherapeuticRoleCategoryCodeSequence::DRTTherapeuticRoleCategoryCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::DRTTherapeuticRoleCategoryCodeSequence(const DRTTherapeuticRoleCategoryCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence &DRTTherapeuticRoleCategoryCodeSequence::operator=(const DRTTherapeuticRoleCategoryCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::~DRTTherapeuticRoleCategoryCodeSequence()
+{
+    clear();
+}
+
+
+void DRTTherapeuticRoleCategoryCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTTherapeuticRoleCategoryCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTTherapeuticRoleCategoryCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTTherapeuticRoleCategoryCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTTherapeuticRoleCategoryCodeSequence::Item &DRTTherapeuticRoleCategoryCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::read(DcmItem &dataset,
+                                                         const OFString &card,
+                                                         const OFString &type,
+                                                         const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_TherapeuticRoleCategoryCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_TherapeuticRoleCategoryCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleCategoryCodeSequence::write(DcmItem &dataset,
+                                                          const OFString &card,
+                                                          const OFString &type,
+                                                          const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TherapeuticRoleCategoryCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 08cbad19ef3325f38fe4abaff9fa2a3d5e5f9a23..ea37dce608219aa9685e8814f0c46929475322b1 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -22,6 +22,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     PatientID(DCM_PatientID),
     IssuerOfPatientID(DCM_IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(),
+    TypeOfPatientID(DCM_TypeOfPatientID),
     PatientBirthDate(DCM_PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(DCM_PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(DCM_PatientDeathDateInAlternativeCalendar),
@@ -78,6 +79,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     PhysiciansOfRecordIdentificationSequence(),
     NameOfPhysiciansReadingStudy(DCM_NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(),
+    RequestingService(DCM_RequestingService),
     RequestingServiceCodeSequence(),
     ReferencedStudySequence(),
     ProcedureCodeSequence(),
@@ -101,12 +103,15 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     AdditionalPatientHistory(DCM_AdditionalPatientHistory),
     AdmissionID(DCM_AdmissionID),
     IssuerOfAdmissionIDSequence(),
+    ReasonForVisit(DCM_ReasonForVisit),
+    ReasonForVisitCodeSequence(),
     ServiceEpisodeID(DCM_ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(),
     ServiceEpisodeDescription(DCM_ServiceEpisodeDescription),
     PatientSexNeutered(DCM_PatientSexNeutered),
     ClinicalTrialTimePointID(DCM_ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(DCM_ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(),
     LongitudinalTemporalOffsetFromEvent(DCM_LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(DCM_LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(),
@@ -129,6 +134,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     PerformedProcedureStepDescription(DCM_PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(),
     CommentsOnThePerformedProcedureStep(DCM_CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(DCM_TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(DCM_ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(DCM_ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(DCM_ClinicalTrialSeriesDescription),
@@ -137,11 +143,14 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     InstitutionAddress(DCM_InstitutionAddress),
     StationName(DCM_StationName),
     InstitutionalDepartmentName(DCM_InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(),
     ManufacturerModelName(DCM_ManufacturerModelName),
+    ManufacturerDeviceClassUID(DCM_ManufacturerDeviceClassUID),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     SoftwareVersions(DCM_SoftwareVersions),
     GantryID(DCM_GantryID),
     UDISequence(),
+    DeviceUID(DCM_DeviceUID),
     SpatialResolution(DCM_SpatialResolution),
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
@@ -192,6 +201,10 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
     PrivateDataElementCharacteristicsSequence(),
+    InstanceOriginStatus(DCM_InstanceOriginStatus),
+    BarcodeValue(DCM_BarcodeValue),
+    ReferencedDefinedProtocolSequence(),
+    ReferencedPerformedProtocolSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -205,6 +218,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     PatientID(copy.PatientID),
     IssuerOfPatientID(copy.IssuerOfPatientID),
     IssuerOfPatientIDQualifiersSequence(copy.IssuerOfPatientIDQualifiersSequence),
+    TypeOfPatientID(copy.TypeOfPatientID),
     PatientBirthDate(copy.PatientBirthDate),
     PatientBirthDateInAlternativeCalendar(copy.PatientBirthDateInAlternativeCalendar),
     PatientDeathDateInAlternativeCalendar(copy.PatientDeathDateInAlternativeCalendar),
@@ -261,6 +275,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     PhysiciansOfRecordIdentificationSequence(copy.PhysiciansOfRecordIdentificationSequence),
     NameOfPhysiciansReadingStudy(copy.NameOfPhysiciansReadingStudy),
     PhysiciansReadingStudyIdentificationSequence(copy.PhysiciansReadingStudyIdentificationSequence),
+    RequestingService(copy.RequestingService),
     RequestingServiceCodeSequence(copy.RequestingServiceCodeSequence),
     ReferencedStudySequence(copy.ReferencedStudySequence),
     ProcedureCodeSequence(copy.ProcedureCodeSequence),
@@ -284,12 +299,15 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     AdditionalPatientHistory(copy.AdditionalPatientHistory),
     AdmissionID(copy.AdmissionID),
     IssuerOfAdmissionIDSequence(copy.IssuerOfAdmissionIDSequence),
+    ReasonForVisit(copy.ReasonForVisit),
+    ReasonForVisitCodeSequence(copy.ReasonForVisitCodeSequence),
     ServiceEpisodeID(copy.ServiceEpisodeID),
     IssuerOfServiceEpisodeIDSequence(copy.IssuerOfServiceEpisodeIDSequence),
     ServiceEpisodeDescription(copy.ServiceEpisodeDescription),
     PatientSexNeutered(copy.PatientSexNeutered),
     ClinicalTrialTimePointID(copy.ClinicalTrialTimePointID),
     ClinicalTrialTimePointDescription(copy.ClinicalTrialTimePointDescription),
+    ClinicalTrialTimePointTypeCodeSequence(copy.ClinicalTrialTimePointTypeCodeSequence),
     LongitudinalTemporalOffsetFromEvent(copy.LongitudinalTemporalOffsetFromEvent),
     LongitudinalTemporalEventType(copy.LongitudinalTemporalEventType),
     ConsentForClinicalTrialUseSequence(copy.ConsentForClinicalTrialUseSequence),
@@ -312,6 +330,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     PerformedProcedureStepDescription(copy.PerformedProcedureStepDescription),
     PerformedProtocolCodeSequence(copy.PerformedProtocolCodeSequence),
     CommentsOnThePerformedProcedureStep(copy.CommentsOnThePerformedProcedureStep),
+    TreatmentSessionUID(copy.TreatmentSessionUID),
     ClinicalTrialCoordinatingCenterName(copy.ClinicalTrialCoordinatingCenterName),
     ClinicalTrialSeriesID(copy.ClinicalTrialSeriesID),
     ClinicalTrialSeriesDescription(copy.ClinicalTrialSeriesDescription),
@@ -320,11 +339,14 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     InstitutionAddress(copy.InstitutionAddress),
     StationName(copy.StationName),
     InstitutionalDepartmentName(copy.InstitutionalDepartmentName),
+    InstitutionalDepartmentTypeCodeSequence(copy.InstitutionalDepartmentTypeCodeSequence),
     ManufacturerModelName(copy.ManufacturerModelName),
+    ManufacturerDeviceClassUID(copy.ManufacturerDeviceClassUID),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     SoftwareVersions(copy.SoftwareVersions),
     GantryID(copy.GantryID),
     UDISequence(copy.UDISequence),
+    DeviceUID(copy.DeviceUID),
     SpatialResolution(copy.SpatialResolution),
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
@@ -375,6 +397,10 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
     PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
+    InstanceOriginStatus(copy.InstanceOriginStatus),
+    BarcodeValue(copy.BarcodeValue),
+    ReferencedDefinedProtocolSequence(copy.ReferencedDefinedProtocolSequence),
+    ReferencedPerformedProtocolSequence(copy.ReferencedPerformedProtocolSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -394,6 +420,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         PatientID = copy.PatientID;
         IssuerOfPatientID = copy.IssuerOfPatientID;
         IssuerOfPatientIDQualifiersSequence = copy.IssuerOfPatientIDQualifiersSequence;
+        TypeOfPatientID = copy.TypeOfPatientID;
         PatientBirthDate = copy.PatientBirthDate;
         PatientBirthDateInAlternativeCalendar = copy.PatientBirthDateInAlternativeCalendar;
         PatientDeathDateInAlternativeCalendar = copy.PatientDeathDateInAlternativeCalendar;
@@ -450,6 +477,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         PhysiciansOfRecordIdentificationSequence = copy.PhysiciansOfRecordIdentificationSequence;
         NameOfPhysiciansReadingStudy = copy.NameOfPhysiciansReadingStudy;
         PhysiciansReadingStudyIdentificationSequence = copy.PhysiciansReadingStudyIdentificationSequence;
+        RequestingService = copy.RequestingService;
         RequestingServiceCodeSequence = copy.RequestingServiceCodeSequence;
         ReferencedStudySequence = copy.ReferencedStudySequence;
         ProcedureCodeSequence = copy.ProcedureCodeSequence;
@@ -473,12 +501,15 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         AdditionalPatientHistory = copy.AdditionalPatientHistory;
         AdmissionID = copy.AdmissionID;
         IssuerOfAdmissionIDSequence = copy.IssuerOfAdmissionIDSequence;
+        ReasonForVisit = copy.ReasonForVisit;
+        ReasonForVisitCodeSequence = copy.ReasonForVisitCodeSequence;
         ServiceEpisodeID = copy.ServiceEpisodeID;
         IssuerOfServiceEpisodeIDSequence = copy.IssuerOfServiceEpisodeIDSequence;
         ServiceEpisodeDescription = copy.ServiceEpisodeDescription;
         PatientSexNeutered = copy.PatientSexNeutered;
         ClinicalTrialTimePointID = copy.ClinicalTrialTimePointID;
         ClinicalTrialTimePointDescription = copy.ClinicalTrialTimePointDescription;
+        ClinicalTrialTimePointTypeCodeSequence = copy.ClinicalTrialTimePointTypeCodeSequence;
         LongitudinalTemporalOffsetFromEvent = copy.LongitudinalTemporalOffsetFromEvent;
         LongitudinalTemporalEventType = copy.LongitudinalTemporalEventType;
         ConsentForClinicalTrialUseSequence = copy.ConsentForClinicalTrialUseSequence;
@@ -501,6 +532,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         PerformedProcedureStepDescription = copy.PerformedProcedureStepDescription;
         PerformedProtocolCodeSequence = copy.PerformedProtocolCodeSequence;
         CommentsOnThePerformedProcedureStep = copy.CommentsOnThePerformedProcedureStep;
+        TreatmentSessionUID = copy.TreatmentSessionUID;
         ClinicalTrialCoordinatingCenterName = copy.ClinicalTrialCoordinatingCenterName;
         ClinicalTrialSeriesID = copy.ClinicalTrialSeriesID;
         ClinicalTrialSeriesDescription = copy.ClinicalTrialSeriesDescription;
@@ -509,11 +541,14 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         InstitutionAddress = copy.InstitutionAddress;
         StationName = copy.StationName;
         InstitutionalDepartmentName = copy.InstitutionalDepartmentName;
+        InstitutionalDepartmentTypeCodeSequence = copy.InstitutionalDepartmentTypeCodeSequence;
         ManufacturerModelName = copy.ManufacturerModelName;
+        ManufacturerDeviceClassUID = copy.ManufacturerDeviceClassUID;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         SoftwareVersions = copy.SoftwareVersions;
         GantryID = copy.GantryID;
         UDISequence = copy.UDISequence;
+        DeviceUID = copy.DeviceUID;
         SpatialResolution = copy.SpatialResolution;
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
@@ -564,6 +599,10 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
         PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
+        InstanceOriginStatus = copy.InstanceOriginStatus;
+        BarcodeValue = copy.BarcodeValue;
+        ReferencedDefinedProtocolSequence = copy.ReferencedDefinedProtocolSequence;
+        ReferencedPerformedProtocolSequence = copy.ReferencedPerformedProtocolSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -578,6 +617,7 @@ void DRTTreatmentSummaryRecordIOD::clear()
     PatientID.clear();
     IssuerOfPatientID.clear();
     IssuerOfPatientIDQualifiersSequence.clear();
+    TypeOfPatientID.clear();
     PatientBirthDate.clear();
     PatientBirthDateInAlternativeCalendar.clear();
     PatientDeathDateInAlternativeCalendar.clear();
@@ -634,6 +674,7 @@ void DRTTreatmentSummaryRecordIOD::clear()
     PhysiciansOfRecordIdentificationSequence.clear();
     NameOfPhysiciansReadingStudy.clear();
     PhysiciansReadingStudyIdentificationSequence.clear();
+    RequestingService.clear();
     RequestingServiceCodeSequence.clear();
     ReferencedStudySequence.clear();
     ProcedureCodeSequence.clear();
@@ -657,12 +698,15 @@ void DRTTreatmentSummaryRecordIOD::clear()
     AdditionalPatientHistory.clear();
     AdmissionID.clear();
     IssuerOfAdmissionIDSequence.clear();
+    ReasonForVisit.clear();
+    ReasonForVisitCodeSequence.clear();
     ServiceEpisodeID.clear();
     IssuerOfServiceEpisodeIDSequence.clear();
     ServiceEpisodeDescription.clear();
     PatientSexNeutered.clear();
     ClinicalTrialTimePointID.clear();
     ClinicalTrialTimePointDescription.clear();
+    ClinicalTrialTimePointTypeCodeSequence.clear();
     LongitudinalTemporalOffsetFromEvent.clear();
     LongitudinalTemporalEventType.clear();
     ConsentForClinicalTrialUseSequence.clear();
@@ -685,6 +729,7 @@ void DRTTreatmentSummaryRecordIOD::clear()
     PerformedProcedureStepDescription.clear();
     PerformedProtocolCodeSequence.clear();
     CommentsOnThePerformedProcedureStep.clear();
+    TreatmentSessionUID.clear();
     ClinicalTrialCoordinatingCenterName.clear();
     ClinicalTrialSeriesID.clear();
     ClinicalTrialSeriesDescription.clear();
@@ -693,11 +738,14 @@ void DRTTreatmentSummaryRecordIOD::clear()
     InstitutionAddress.clear();
     StationName.clear();
     InstitutionalDepartmentName.clear();
+    InstitutionalDepartmentTypeCodeSequence.clear();
     ManufacturerModelName.clear();
+    ManufacturerDeviceClassUID.clear();
     DeviceSerialNumber.clear();
     SoftwareVersions.clear();
     GantryID.clear();
     UDISequence.clear();
+    DeviceUID.clear();
     SpatialResolution.clear();
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
@@ -748,6 +796,10 @@ void DRTTreatmentSummaryRecordIOD::clear()
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
     PrivateDataElementCharacteristicsSequence.clear();
+    InstanceOriginStatus.clear();
+    BarcodeValue.clear();
+    ReferencedDefinedProtocolSequence.clear();
+    ReferencedPerformedProtocolSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -803,11 +855,14 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, InstitutionAddress, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, StationName, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, InstitutionalDepartmentName, "1", "3", "GeneralEquipmentModule");
+        InstitutionalDepartmentTypeCodeSequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, ManufacturerModelName, "1", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, ManufacturerDeviceClassUID, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DeviceSerialNumber, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SoftwareVersions, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, GantryID, "1", "3", "GeneralEquipmentModule");
         UDISequence.read(dataset, "1-n", "3", "GeneralEquipmentModule");
+        getAndCheckElementFromDataset(dataset, DeviceUID, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, SpatialResolution, "1", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, DateOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
@@ -867,6 +922,10 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset)
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
         PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, InstanceOriginStatus, "1", "3", "SOPCommonModule");
+        getAndCheckElementFromDataset(dataset, BarcodeValue, "1", "3", "SOPCommonModule");
+        ReferencedDefinedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
+        ReferencedPerformedProtocolSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -885,6 +944,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readPatientData(DcmItem &dataset)
     getAndCheckElementFromDataset(dataset, PatientID, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, IssuerOfPatientID, "1", "3", "PatientModule");
     IssuerOfPatientIDQualifiersSequence.read(dataset, "1-n", "3", "PatientModule");
+    getAndCheckElementFromDataset(dataset, TypeOfPatientID, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDate, "1", "2", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientBirthDateInAlternativeCalendar, "1", "3", "PatientModule");
     getAndCheckElementFromDataset(dataset, PatientDeathDateInAlternativeCalendar, "1", "3", "PatientModule");
@@ -961,6 +1021,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset)
         PhysiciansOfRecordIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, NameOfPhysiciansReadingStudy, "1-n", "3", "GeneralStudyModule");
         PhysiciansReadingStudyIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, RequestingService, "1", "3", "GeneralStudyModule");
         RequestingServiceCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ReferencedStudySequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         ProcedureCodeSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -986,6 +1047,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, AdditionalPatientHistory, "1", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, AdmissionID, "1", "3", "PatientStudyModule");
         IssuerOfAdmissionIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
+        getAndCheckElementFromDataset(dataset, ReasonForVisit, "1", "3", "PatientStudyModule");
+        ReasonForVisitCodeSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeID, "1", "3", "PatientStudyModule");
         IssuerOfServiceEpisodeIDSequence.read(dataset, "1-n", "3", "PatientStudyModule");
         getAndCheckElementFromDataset(dataset, ServiceEpisodeDescription, "1", "3", "PatientStudyModule");
@@ -996,6 +1059,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointID, "1", "2", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, ClinicalTrialTimePointDescription, "1", "3", "ClinicalTrialStudyModule");
+            ClinicalTrialTimePointTypeCodeSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalOffsetFromEvent, "1", "3", "ClinicalTrialStudyModule");
             getAndCheckElementFromDataset(dataset, LongitudinalTemporalEventType, "1", "1C", "ClinicalTrialStudyModule");
             ConsentForClinicalTrialUseSequence.read(dataset, "1-n", "3", "ClinicalTrialStudyModule");
@@ -1031,6 +1095,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::readSeriesData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, PerformedProcedureStepDescription, "1", "3", "RTSeriesModule");
         PerformedProtocolCodeSequence.read(dataset, "1-n", "3", "RTSeriesModule");
         getAndCheckElementFromDataset(dataset, CommentsOnThePerformedProcedureStep, "1", "3", "RTSeriesModule");
+        getAndCheckElementFromDataset(dataset, TreatmentSessionUID, "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (dataset.tagExists(DCM_ClinicalTrialCoordinatingCenterName))
@@ -1058,6 +1123,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PatientID), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(IssuerOfPatientID), "1", "3", "PatientModule");
         if (result.good()) result = IssuerOfPatientIDQualifiersSequence.write(dataset, "1-n" ,"3", "PatientModule");
+        addElementToDataset(result, dataset, new DcmCodeString(TypeOfPatientID), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmDate(PatientBirthDate), "1", "2", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientBirthDateInAlternativeCalendar), "1", "3", "PatientModule");
         addElementToDataset(result, dataset, new DcmLongString(PatientDeathDateInAlternativeCalendar), "1", "3", "PatientModule");
@@ -1121,6 +1187,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         if (result.good()) result = PhysiciansOfRecordIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(NameOfPhysiciansReadingStudy), "1-n", "3", "GeneralStudyModule");
         if (result.good()) result = PhysiciansReadingStudyIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmLongString(RequestingService), "1", "3", "GeneralStudyModule");
         if (result.good()) result = RequestingServiceCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ReferencedStudySequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         if (result.good()) result = ProcedureCodeSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1148,6 +1215,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
             addElementToDataset(result, dataset, new DcmLongText(AdditionalPatientHistory), "1", "3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(AdmissionID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfAdmissionIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
+            addElementToDataset(result, dataset, new DcmUnlimitedText(ReasonForVisit), "1", "3", "PatientStudyModule");
+            if (result.good()) result = ReasonForVisitCodeSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeID), "1", "3", "PatientStudyModule");
             if (result.good()) result = IssuerOfServiceEpisodeIDSequence.write(dataset, "1-n" ,"3", "PatientStudyModule");
             addElementToDataset(result, dataset, new DcmLongString(ServiceEpisodeDescription), "1", "3", "PatientStudyModule");
@@ -1159,6 +1228,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmLongString(ClinicalTrialTimePointID), "1", "2", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmShortText(ClinicalTrialTimePointDescription), "1", "3", "ClinicalTrialStudyModule");
+            if (result.good()) result = ClinicalTrialTimePointTypeCodeSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmFloatingPointDouble(LongitudinalTemporalOffsetFromEvent), "1", "3", "ClinicalTrialStudyModule");
             addElementToDataset(result, dataset, new DcmCodeString(LongitudinalTemporalEventType), "1", "1C", "ClinicalTrialStudyModule");
             if (result.good()) result = ConsentForClinicalTrialUseSequence.write(dataset, "1-n" ,"3", "ClinicalTrialStudyModule");
@@ -1184,6 +1254,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmLongString(PerformedProcedureStepDescription), "1", "3", "RTSeriesModule");
         if (result.good()) result = PerformedProtocolCodeSequence.write(dataset, "1-n" ,"3", "RTSeriesModule");
         addElementToDataset(result, dataset, new DcmShortText(CommentsOnThePerformedProcedureStep), "1", "3", "RTSeriesModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(TreatmentSessionUID), "1", "3", "RTSeriesModule");
 
         // --- ClinicalTrialSeriesModule (U) ---
         if (isClinicalTrialSeriesModulePresent(OFFalse /*complete*/))
@@ -1199,11 +1270,14 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmShortText(InstitutionAddress), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmShortString(StationName), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(InstitutionalDepartmentName), "1", "3", "GeneralEquipmentModule");
+        if (result.good()) result = InstitutionalDepartmentTypeCodeSequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(ManufacturerModelName), "1", "3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(ManufacturerDeviceClassUID), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(DeviceSerialNumber), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(SoftwareVersions), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmLongString(GantryID), "1", "3", "GeneralEquipmentModule");
         if (result.good()) result = UDISequence.write(dataset, "1-n" ,"3", "GeneralEquipmentModule");
+        addElementToDataset(result, dataset, new DcmUniqueIdentifier(DeviceUID), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDecimalString(SpatialResolution), "1", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmDate(DateOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
@@ -1266,6 +1340,10 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
         if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmCodeString(InstanceOriginStatus), "1", "3", "SOPCommonModule");
+        addElementToDataset(result, dataset, new DcmLongText(BarcodeValue), "1", "3", "SOPCommonModule");
+        if (result.good()) result = ReferencedDefinedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
+        if (result.good()) result = ReferencedPerformedProtocolSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1323,6 +1401,8 @@ OFBool DRTTreatmentSummaryRecordIOD::isPatientStudyModulePresent(const OFBool /*
            !AdditionalPatientHistory.isEmpty() ||
            !AdmissionID.isEmpty() ||
            !IssuerOfAdmissionIDSequence.isEmpty() ||
+           !ReasonForVisit.isEmpty() ||
+           !ReasonForVisitCodeSequence.isEmpty() ||
            !ServiceEpisodeID.isEmpty() ||
            !IssuerOfServiceEpisodeIDSequence.isEmpty() ||
            !ServiceEpisodeDescription.isEmpty() ||
@@ -1335,6 +1415,7 @@ OFBool DRTTreatmentSummaryRecordIOD::isClinicalTrialStudyModulePresent(const OFB
     /* check whether at least one attribute is present */
     return !ClinicalTrialTimePointID.isEmpty() ||
            !ClinicalTrialTimePointDescription.isEmpty() ||
+           !ClinicalTrialTimePointTypeCodeSequence.isEmpty() ||
            !LongitudinalTemporalOffsetFromEvent.isEmpty() ||
            !LongitudinalTemporalEventType.isEmpty() ||
            !ConsentForClinicalTrialUseSequence.isEmpty();
@@ -1406,6 +1487,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getAuthorizationEquipmentCertification
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getBarcodeValue(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(BarcodeValue, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getClinicalTrialCoordinatingCenterName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ClinicalTrialCoordinatingCenterName, value, pos);
@@ -1538,6 +1625,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getDeviceSerialNumber(OFString &value,
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getDeviceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(DeviceUID, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getEthnicGroup(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(EthnicGroup, value, pos);
@@ -1592,6 +1685,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getInstanceNumber(Sint32 &value, const
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getInstanceOriginStatus(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(InstanceOriginStatus, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(InstitutionAddress, value, pos);
@@ -1646,6 +1745,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getManufacturer(OFString &value, const
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getManufacturerDeviceClassUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ManufacturerDeviceClassUID, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getManufacturerModelName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ManufacturerModelName, value, pos);
@@ -1916,6 +2021,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getQueryRetrieveView(OFString &value,
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getReasonForVisit(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ReasonForVisit, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getReferringPhysicianName(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ReferringPhysicianName, value, pos);
@@ -1928,6 +2039,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getRelatedGeneralSOPClassUID(OFString
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getRequestingService(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(RequestingService, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getResponsibleOrganization(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ResponsibleOrganization, value, pos);
@@ -2126,6 +2243,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentDate(OFString &value, cons
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentSessionUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TreatmentSessionUID, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentStatusComment(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(TreatmentStatusComment, value, pos);
@@ -2138,6 +2261,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getTreatmentTime(OFString &value, cons
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getTypeOfPatientID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(TypeOfPatientID, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setAccessionNumber(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2192,6 +2321,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setAuthorizationEquipmentCertification
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setBarcodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = BarcodeValue.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setClinicalTrialCoordinatingCenterName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2390,6 +2528,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setDeviceSerialNumber(const OFString &
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setDeviceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = DeviceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setEthnicGroup(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
@@ -2462,6 +2609,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setInstanceNumber(const OFString &valu
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setInstanceOriginStatus(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = InstanceOriginStatus.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -2540,6 +2696,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setManufacturer(const OFString &value,
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setManufacturerDeviceClassUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ManufacturerDeviceClassUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setManufacturerModelName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2894,6 +3059,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setQueryRetrieveView(const OFString &v
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setReasonForVisit(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUnlimitedText::checkStringValue(value) : EC_Normal;
+    if (result.good())
+        result = ReasonForVisit.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setReferringPhysicianName(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1") : EC_Normal;
@@ -2912,6 +3086,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setRelatedGeneralSOPClassUID(const OFS
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setRequestingService(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = RequestingService.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setResponsibleOrganization(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -3191,6 +3374,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentDate(const OFString &value
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentSessionUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TreatmentSessionUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentStatusComment(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
@@ -3209,4 +3401,13 @@ OFCondition DRTTreatmentSummaryRecordIOD::setTreatmentTime(const OFString &value
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setTypeOfPatientID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = TypeOfPatientID.putOFStringArray(value);
+    return result;
+}
+
+
 // end of source file
diff --git a/dcmrt/libsrc/drttrtcs.cc b/dcmrt/libsrc/drttrtcs.cc
new file mode 100644 (file)
index 0000000..6d600ae
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTTherapeuticRoleTypeCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drttrtcs.h"
+
+
+// --- item class ---
+
+DRTTherapeuticRoleTypeCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::Item::~Item()
+{
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTTherapeuticRoleTypeCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTTherapeuticRoleTypeCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTTherapeuticRoleTypeCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "TherapeuticRoleTypeCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTTherapeuticRoleTypeCodeSequence::DRTTherapeuticRoleTypeCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::DRTTherapeuticRoleTypeCodeSequence(const DRTTherapeuticRoleTypeCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence &DRTTherapeuticRoleTypeCodeSequence::operator=(const DRTTherapeuticRoleTypeCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::~DRTTherapeuticRoleTypeCodeSequence()
+{
+    clear();
+}
+
+
+void DRTTherapeuticRoleTypeCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTTherapeuticRoleTypeCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTTherapeuticRoleTypeCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTTherapeuticRoleTypeCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTTherapeuticRoleTypeCodeSequence::Item &DRTTherapeuticRoleTypeCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::read(DcmItem &dataset,
+                                                     const OFString &card,
+                                                     const OFString &type,
+                                                     const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_TherapeuticRoleTypeCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_TherapeuticRoleTypeCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTTherapeuticRoleTypeCodeSequence::write(DcmItem &dataset,
+                                                      const OFString &card,
+                                                      const OFString &type,
+                                                      const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TherapeuticRoleTypeCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 378b81bdc20effb00fc7bea01d249535b6a5cb9c..c4884e799f16e4e09f32bcd82c60afed3a806c1d 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -319,10 +319,12 @@ OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTTreatmentSummaryCalculatedDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drttscs.cc b/dcmrt/libsrc/drttscs.cc
new file mode 100644 (file)
index 0000000..c30b90c
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTTreatmentSiteCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drttscs.h"
+
+
+// --- item class ---
+
+DRTTreatmentSiteCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTTreatmentSiteCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTTreatmentSiteCodeSequence::Item::~Item()
+{
+}
+
+
+DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTTreatmentSiteCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTTreatmentSiteCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTTreatmentSiteCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "TreatmentSiteCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "TreatmentSiteCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "TreatmentSiteCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "TreatmentSiteCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "TreatmentSiteCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "TreatmentSiteCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTTreatmentSiteCodeSequence::DRTTreatmentSiteCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTTreatmentSiteCodeSequence::DRTTreatmentSiteCodeSequence(const DRTTreatmentSiteCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTTreatmentSiteCodeSequence &DRTTreatmentSiteCodeSequence::operator=(const DRTTreatmentSiteCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTTreatmentSiteCodeSequence::~DRTTreatmentSiteCodeSequence()
+{
+    clear();
+}
+
+
+void DRTTreatmentSiteCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTTreatmentSiteCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTTreatmentSiteCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTTreatmentSiteCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTTreatmentSiteCodeSequence::Item &DRTTreatmentSiteCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::read(DcmItem &dataset,
+                                               const OFString &card,
+                                               const OFString &type,
+                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_TreatmentSiteCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_TreatmentSiteCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTTreatmentSiteCodeSequence::write(DcmItem &dataset,
+                                                const OFString &card,
+                                                const OFString &type,
+                                                const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_TreatmentSiteCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 88c839e28d5e9af67d51dc47f00fbbab30e57f94..5f560b048dd361f2b21c8a1c2d7eff7c6bf0d6dd 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -31,11 +31,13 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     DeliveredPrimaryMeterset(DCM_DeliveredPrimaryMeterset),
     DeliveredSecondaryMeterset(DCM_DeliveredSecondaryMeterset),
     DeliveredTreatmentTime(DCM_DeliveredTreatmentTime),
+    EntityLongLabel(DCM_EntityLongLabel),
     FixationEye(DCM_FixationEye),
     FixationLightAzimuthalAngle(DCM_FixationLightAzimuthalAngle),
     FixationLightPolarAngle(DCM_FixationLightPolarAngle),
     GeneralAccessorySequence(emptyDefaultItem /*emptyDefaultSequence*/),
     IonControlPointDeliverySequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    MachineSpecificTreatmentTerminationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ModulatedScanModeType(DCM_ModulatedScanModeType),
     NumberOfBlocks(DCM_NumberOfBlocks),
     NumberOfBoli(DCM_NumberOfBoli),
@@ -48,6 +50,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     PatientSupportAccessoryCode(DCM_PatientSupportAccessoryCode),
     PatientSupportID(DCM_PatientSupportID),
     PatientSupportType(DCM_PatientSupportType),
+    RTTreatmentTerminationReasonCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     RadiationAtomicNumber(DCM_RadiationAtomicNumber),
     RadiationChargeState(DCM_RadiationChargeState),
     RadiationMassNumber(DCM_RadiationMassNumber),
@@ -71,7 +74,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const OFBool emptyDefaultItem)
     SpecifiedSecondaryMeterset(DCM_SpecifiedSecondaryMeterset),
     SpecifiedTreatmentTime(DCM_SpecifiedTreatmentTime),
     TreatmentDeliveryType(DCM_TreatmentDeliveryType),
-    TreatmentTerminationCode(DCM_TreatmentTerminationCode),
+    TreatmentTerminationDescription(DCM_TreatmentTerminationDescription),
     TreatmentTerminationStatus(DCM_TreatmentTerminationStatus),
     TreatmentVerificationStatus(DCM_TreatmentVerificationStatus)
 {
@@ -90,11 +93,13 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const Item &copy)
     DeliveredPrimaryMeterset(copy.DeliveredPrimaryMeterset),
     DeliveredSecondaryMeterset(copy.DeliveredSecondaryMeterset),
     DeliveredTreatmentTime(copy.DeliveredTreatmentTime),
+    EntityLongLabel(copy.EntityLongLabel),
     FixationEye(copy.FixationEye),
     FixationLightAzimuthalAngle(copy.FixationLightAzimuthalAngle),
     FixationLightPolarAngle(copy.FixationLightPolarAngle),
     GeneralAccessorySequence(copy.GeneralAccessorySequence),
     IonControlPointDeliverySequence(copy.IonControlPointDeliverySequence),
+    MachineSpecificTreatmentTerminationCodeSequence(copy.MachineSpecificTreatmentTerminationCodeSequence),
     ModulatedScanModeType(copy.ModulatedScanModeType),
     NumberOfBlocks(copy.NumberOfBlocks),
     NumberOfBoli(copy.NumberOfBoli),
@@ -107,6 +112,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const Item &copy)
     PatientSupportAccessoryCode(copy.PatientSupportAccessoryCode),
     PatientSupportID(copy.PatientSupportID),
     PatientSupportType(copy.PatientSupportType),
+    RTTreatmentTerminationReasonCodeSequence(copy.RTTreatmentTerminationReasonCodeSequence),
     RadiationAtomicNumber(copy.RadiationAtomicNumber),
     RadiationChargeState(copy.RadiationChargeState),
     RadiationMassNumber(copy.RadiationMassNumber),
@@ -130,7 +136,7 @@ DRTTreatmentSessionIonBeamSequence::Item::Item(const Item &copy)
     SpecifiedSecondaryMeterset(copy.SpecifiedSecondaryMeterset),
     SpecifiedTreatmentTime(copy.SpecifiedTreatmentTime),
     TreatmentDeliveryType(copy.TreatmentDeliveryType),
-    TreatmentTerminationCode(copy.TreatmentTerminationCode),
+    TreatmentTerminationDescription(copy.TreatmentTerminationDescription),
     TreatmentTerminationStatus(copy.TreatmentTerminationStatus),
     TreatmentVerificationStatus(copy.TreatmentVerificationStatus)
 {
@@ -157,11 +163,13 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::It
         DeliveredPrimaryMeterset = copy.DeliveredPrimaryMeterset;
         DeliveredSecondaryMeterset = copy.DeliveredSecondaryMeterset;
         DeliveredTreatmentTime = copy.DeliveredTreatmentTime;
+        EntityLongLabel = copy.EntityLongLabel;
         FixationEye = copy.FixationEye;
         FixationLightAzimuthalAngle = copy.FixationLightAzimuthalAngle;
         FixationLightPolarAngle = copy.FixationLightPolarAngle;
         GeneralAccessorySequence = copy.GeneralAccessorySequence;
         IonControlPointDeliverySequence = copy.IonControlPointDeliverySequence;
+        MachineSpecificTreatmentTerminationCodeSequence = copy.MachineSpecificTreatmentTerminationCodeSequence;
         ModulatedScanModeType = copy.ModulatedScanModeType;
         NumberOfBlocks = copy.NumberOfBlocks;
         NumberOfBoli = copy.NumberOfBoli;
@@ -174,6 +182,7 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::It
         PatientSupportAccessoryCode = copy.PatientSupportAccessoryCode;
         PatientSupportID = copy.PatientSupportID;
         PatientSupportType = copy.PatientSupportType;
+        RTTreatmentTerminationReasonCodeSequence = copy.RTTreatmentTerminationReasonCodeSequence;
         RadiationAtomicNumber = copy.RadiationAtomicNumber;
         RadiationChargeState = copy.RadiationChargeState;
         RadiationMassNumber = copy.RadiationMassNumber;
@@ -197,7 +206,7 @@ DRTTreatmentSessionIonBeamSequence::Item &DRTTreatmentSessionIonBeamSequence::It
         SpecifiedSecondaryMeterset = copy.SpecifiedSecondaryMeterset;
         SpecifiedTreatmentTime = copy.SpecifiedTreatmentTime;
         TreatmentDeliveryType = copy.TreatmentDeliveryType;
-        TreatmentTerminationCode = copy.TreatmentTerminationCode;
+        TreatmentTerminationDescription = copy.TreatmentTerminationDescription;
         TreatmentTerminationStatus = copy.TreatmentTerminationStatus;
         TreatmentVerificationStatus = copy.TreatmentVerificationStatus;
     }
@@ -212,6 +221,7 @@ void DRTTreatmentSessionIonBeamSequence::Item::clear()
         /* clear all DICOM attributes */
         ReferencedBeamNumber.clear();
         BeamName.clear();
+        EntityLongLabel.clear();
         BeamDescription.clear();
         BeamType.clear();
         RadiationType.clear();
@@ -252,7 +262,9 @@ void DRTTreatmentSessionIonBeamSequence::Item::clear()
         CurrentFractionNumber.clear();
         TreatmentDeliveryType.clear();
         TreatmentTerminationStatus.clear();
-        TreatmentTerminationCode.clear();
+        RTTreatmentTerminationReasonCodeSequence.clear();
+        MachineSpecificTreatmentTerminationCodeSequence.clear();
+        TreatmentTerminationDescription.clear();
         TreatmentVerificationStatus.clear();
         SpecifiedPrimaryMeterset.clear();
         SpecifiedSecondaryMeterset.clear();
@@ -271,6 +283,7 @@ OFBool DRTTreatmentSessionIonBeamSequence::Item::isEmpty()
 {
     return ReferencedBeamNumber.isEmpty() &&
            BeamName.isEmpty() &&
+           EntityLongLabel.isEmpty() &&
            BeamDescription.isEmpty() &&
            BeamType.isEmpty() &&
            RadiationType.isEmpty() &&
@@ -311,7 +324,9 @@ OFBool DRTTreatmentSessionIonBeamSequence::Item::isEmpty()
            CurrentFractionNumber.isEmpty() &&
            TreatmentDeliveryType.isEmpty() &&
            TreatmentTerminationStatus.isEmpty() &&
-           TreatmentTerminationCode.isEmpty() &&
+           RTTreatmentTerminationReasonCodeSequence.isEmpty() &&
+           MachineSpecificTreatmentTerminationCodeSequence.isEmpty() &&
+           TreatmentTerminationDescription.isEmpty() &&
            TreatmentVerificationStatus.isEmpty() &&
            SpecifiedPrimaryMeterset.isEmpty() &&
            SpecifiedSecondaryMeterset.isEmpty() &&
@@ -340,6 +355,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, ReferencedBeamNumber, "1", "1", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, BeamName, "1", "1", "TreatmentSessionIonBeamSequence");
+        getAndCheckElementFromDataset(item, EntityLongLabel, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, BeamDescription, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, BeamType, "1", "1", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, RadiationType, "1", "1", "TreatmentSessionIonBeamSequence");
@@ -380,7 +396,9 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, CurrentFractionNumber, "1", "2", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, TreatmentDeliveryType, "1", "2", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, TreatmentTerminationStatus, "1", "1", "TreatmentSessionIonBeamSequence");
-        getAndCheckElementFromDataset(item, TreatmentTerminationCode, "1", "3", "TreatmentSessionIonBeamSequence");
+        RTTreatmentTerminationReasonCodeSequence.read(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
+        MachineSpecificTreatmentTerminationCodeSequence.read(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
+        getAndCheckElementFromDataset(item, TreatmentTerminationDescription, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, TreatmentVerificationStatus, "1", "2", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, SpecifiedPrimaryMeterset, "1", "3", "TreatmentSessionIonBeamSequence");
         getAndCheckElementFromDataset(item, SpecifiedSecondaryMeterset, "1", "3", "TreatmentSessionIonBeamSequence");
@@ -405,6 +423,7 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ReferencedBeamNumber), "1", "1", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmLongString(BeamName), "1", "1", "TreatmentSessionIonBeamSequence");
+        addElementToDataset(result, item, new DcmLongString(EntityLongLabel), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmShortText(BeamDescription), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(BeamType), "1", "1", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(RadiationType), "1", "1", "TreatmentSessionIonBeamSequence");
@@ -445,7 +464,9 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmIntegerString(CurrentFractionNumber), "1", "2", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(TreatmentDeliveryType), "1", "2", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(TreatmentTerminationStatus), "1", "1", "TreatmentSessionIonBeamSequence");
-        addElementToDataset(result, item, new DcmShortString(TreatmentTerminationCode), "1", "3", "TreatmentSessionIonBeamSequence");
+        if (result.good()) result = RTTreatmentTerminationReasonCodeSequence.write(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
+        if (result.good()) result = MachineSpecificTreatmentTerminationCodeSequence.write(item, "1-n", "3", "TreatmentSessionIonBeamSequence");
+        addElementToDataset(result, item, new DcmShortText(TreatmentTerminationDescription), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmCodeString(TreatmentVerificationStatus), "1", "2", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(SpecifiedPrimaryMeterset), "1", "3", "TreatmentSessionIonBeamSequence");
         addElementToDataset(result, item, new DcmDecimalString(SpecifiedSecondaryMeterset), "1", "3", "TreatmentSessionIonBeamSequence");
@@ -560,6 +581,15 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::getDeliveredTreatmentTime(
 }
 
 
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::getEntityLongLabel(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(EntityLongLabel, value, pos);
+}
+
+
 OFCondition DRTTreatmentSessionIonBeamSequence::Item::getFixationEye(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -947,12 +977,12 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::getTreatmentDeliveryType(O
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::Item::getTreatmentTerminationCode(OFString &value, const signed long pos) const
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::getTreatmentTerminationDescription(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(TreatmentTerminationCode, value, pos);
+        return getStringValueFromElement(TreatmentTerminationDescription, value, pos);
 }
 
 
@@ -1065,6 +1095,19 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::setDeliveredTreatmentTime(
 }
 
 
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::setEntityLongLabel(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = EntityLongLabel.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTTreatmentSessionIonBeamSequence::Item::setFixationEye(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -1404,14 +1447,14 @@ OFCondition DRTTreatmentSessionIonBeamSequence::Item::setTreatmentDeliveryType(c
 }
 
 
-OFCondition DRTTreatmentSessionIonBeamSequence::Item::setTreatmentTerminationCode(const OFString &value, const OFBool check)
+OFCondition DRTTreatmentSessionIonBeamSequence::Item::setTreatmentTerminationDescription(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmShortText::checkStringValue(value) : EC_Normal;
         if (result.good())
-            result = TreatmentTerminationCode.putOFStringArray(value);
+            result = TreatmentTerminationDescription.putOFStringArray(value);
     }
     return result;
 }
@@ -1567,10 +1610,12 @@ OFCondition DRTTreatmentSessionIonBeamSequence::gotoFirstItem()
 OFCondition DRTTreatmentSessionIonBeamSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index f83deb739e23e51216d108e3802d1199e23a73aa..0e438947cfd5c46d6048c67ea70f86b37dd0207c 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -319,10 +319,12 @@ OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoFirstItem()
 OFCondition DRTTreatmentSummaryMeasuredDoseReferenceSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtttrcs.cc b/dcmrt/libsrc/drtttrcs.cc
new file mode 100644 (file)
index 0000000..096d108
--- /dev/null
@@ -0,0 +1,959 @@
+/*
+ *
+ *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class DRTRTTreatmentTerminationReasonCodeSequence
+ *
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
+
+#include "dcmtk/dcmrt/seq/drtttrcs.h"
+
+
+// --- item class ---
+
+DRTRTTreatmentTerminationReasonCodeSequence::Item::Item(const OFBool emptyDefaultItem)
+  : EmptyDefaultItem(emptyDefaultItem),
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(DCM_ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(DCM_ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(DCM_ContextGroupLocalVersion),
+    ContextGroupVersion(DCM_ContextGroupVersion),
+    ContextIdentifier(DCM_ContextIdentifier),
+    ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceName(DCM_MappingResourceName),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
+{
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::Item::Item(const Item &copy)
+  : EmptyDefaultItem(copy.EmptyDefaultItem),
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    ContextGroupExtensionCreatorUID(copy.ContextGroupExtensionCreatorUID),
+    ContextGroupExtensionFlag(copy.ContextGroupExtensionFlag),
+    ContextGroupLocalVersion(copy.ContextGroupLocalVersion),
+    ContextGroupVersion(copy.ContextGroupVersion),
+    ContextIdentifier(copy.ContextIdentifier),
+    ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceName(copy.MappingResourceName),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
+{
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::Item::~Item()
+{
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::Item::operator=(const Item &copy)
+{
+    if (this != &copy)
+    {
+        EmptyDefaultItem = copy.EmptyDefaultItem;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        ContextGroupExtensionCreatorUID = copy.ContextGroupExtensionCreatorUID;
+        ContextGroupExtensionFlag = copy.ContextGroupExtensionFlag;
+        ContextGroupLocalVersion = copy.ContextGroupLocalVersion;
+        ContextGroupVersion = copy.ContextGroupVersion;
+        ContextIdentifier = copy.ContextIdentifier;
+        ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
+        MappingResource = copy.MappingResource;
+        MappingResourceName = copy.MappingResourceName;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
+    }
+    return *this;
+}
+
+
+void DRTRTTreatmentTerminationReasonCodeSequence::Item::clear()
+{
+    if (!EmptyDefaultItem)
+    {
+        /* clear all DICOM attributes */
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
+        ContextIdentifier.clear();
+        ContextUID.clear();
+        MappingResource.clear();
+        MappingResourceUID.clear();
+        MappingResourceName.clear();
+        ContextGroupVersion.clear();
+        ContextGroupExtensionFlag.clear();
+        ContextGroupLocalVersion.clear();
+        ContextGroupExtensionCreatorUID.clear();
+    }
+}
+
+
+OFBool DRTRTTreatmentTerminationReasonCodeSequence::Item::isEmpty()
+{
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
+           ContextIdentifier.isEmpty() &&
+           ContextUID.isEmpty() &&
+           MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
+           MappingResourceName.isEmpty() &&
+           ContextGroupVersion.isEmpty() &&
+           ContextGroupExtensionFlag.isEmpty() &&
+           ContextGroupLocalVersion.isEmpty() &&
+           ContextGroupExtensionCreatorUID.isEmpty();
+}
+
+
+OFBool DRTRTTreatmentTerminationReasonCodeSequence::Item::isValid() const
+{
+    return !EmptyDefaultItem;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::read(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        /* re-initialize object */
+        clear();
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceName, "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        getAndCheckElementFromDataset(item, ContextGroupExtensionCreatorUID, "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::write(DcmItem &item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = EC_Normal;
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextUID), "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(MappingResource), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(MappingResourceUID), "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmLongString(MappingResourceName), "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupVersion), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(ContextGroupExtensionCreatorUID), "1", "1C", "RTTreatmentTerminationReasonCodeSequence");
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeMeaning, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodeValue, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupExtensionCreatorUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionCreatorUID, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupExtensionFlag(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupExtensionFlag, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupLocalVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupLocalVersion, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextGroupVersion(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextGroupVersion, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextIdentifier(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextIdentifier, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getContextUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(ContextUID, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResource, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getMappingResourceName(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceName, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeMeaning.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeDesignator.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = CodingSchemeVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupExtensionCreatorUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionCreatorUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupExtensionFlag(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupExtensionFlag.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupLocalVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupLocalVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextGroupVersion(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDateTime::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextGroupVersion.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextIdentifier(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextIdentifier.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setContextUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = ContextUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResource.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setMappingResourceName(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceName.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setMappingResourceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = MappingResourceUID.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+// --- sequence class ---
+
+DRTRTTreatmentTerminationReasonCodeSequence::DRTRTTreatmentTerminationReasonCodeSequence(const OFBool emptyDefaultSequence)
+  : EmptyDefaultSequence(emptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    CurrentItem = SequenceOfItems.end();
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::DRTRTTreatmentTerminationReasonCodeSequence(const DRTRTTreatmentTerminationReasonCodeSequence &copy)
+  : EmptyDefaultSequence(copy.EmptyDefaultSequence),
+    SequenceOfItems(),
+    CurrentItem(),
+    EmptyItem(OFTrue /*emptyDefaultItem*/)
+{
+    /* create a copy of the internal sequence of items */
+    Item *item = NULL;
+    OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+    const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+    while (current != last)
+    {
+        item = new Item(**current);
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+        } else {
+            /* memory exhausted, there is nothing we can do about it */
+            break;
+        }
+        ++current;
+    }
+    CurrentItem = SequenceOfItems.begin();
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence &DRTRTTreatmentTerminationReasonCodeSequence::operator=(const DRTRTTreatmentTerminationReasonCodeSequence &copy)
+{
+    if (this != &copy)
+    {
+        clear();
+        EmptyDefaultSequence = copy.EmptyDefaultSequence;
+        /* create a copy of the internal sequence of items */
+        Item *item = NULL;
+        OFListConstIterator(Item *) current = copy.SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = copy.SequenceOfItems.end();
+        while (current != last)
+        {
+            item = new Item(**current);
+            if (item != NULL)
+            {
+                SequenceOfItems.push_back(item);
+            } else {
+                /* memory exhausted, there is nothing we can do about it */
+                break;
+            }
+            ++current;
+        }
+        CurrentItem = SequenceOfItems.begin();
+    }
+    return *this;
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::~DRTRTTreatmentTerminationReasonCodeSequence()
+{
+    clear();
+}
+
+
+void DRTRTTreatmentTerminationReasonCodeSequence::clear()
+{
+    if (!EmptyDefaultSequence)
+    {
+        CurrentItem = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        /* delete all items and free memory */
+        while (CurrentItem != last)
+        {
+            delete (*CurrentItem);
+            CurrentItem = SequenceOfItems.erase(CurrentItem);
+        }
+        /* make sure that the list is empty */
+        SequenceOfItems.clear();
+        CurrentItem = SequenceOfItems.end();
+    }
+}
+
+
+OFBool DRTRTTreatmentTerminationReasonCodeSequence::isEmpty()
+{
+    return SequenceOfItems.empty();
+}
+
+
+OFBool DRTRTTreatmentTerminationReasonCodeSequence::isValid() const
+{
+    return !EmptyDefaultSequence;
+}
+
+
+size_t DRTRTTreatmentTerminationReasonCodeSequence::getNumberOfItems() const
+{
+    return SequenceOfItems.size();
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoFirstItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        CurrentItem = SequenceOfItems.begin();
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoNextItem()
+{
+    OFCondition result = EC_IllegalCall;
+    if (++CurrentItem != SequenceOfItems.end())
+    {
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoItem(const size_t num, OFListIterator(Item *) &iterator)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoItem(const size_t num, OFListConstIterator(Item *) &iterator) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (!SequenceOfItems.empty())
+    {
+        size_t idx = num + 1;
+        iterator = SequenceOfItems.begin();
+        const OFListConstIterator(Item *) last = SequenceOfItems.end();
+        while ((--idx > 0) && (iterator != last))
+            ++iterator;
+        /* specified list item found? */
+        if ((idx == 0) && (iterator != last))
+            result = EC_Normal;
+        else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::gotoItem(const size_t num)
+{
+    return gotoItem(num, CurrentItem);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::getCurrentItem(Item *&item) const
+{
+    OFCondition result = EC_IllegalCall;
+    if (CurrentItem != SequenceOfItems.end())
+    {
+        item = *CurrentItem;
+        result = EC_Normal;
+    }
+    return result;
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getCurrentItem()
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getCurrentItem() const
+{
+    if (CurrentItem != SequenceOfItems.end())
+        return **CurrentItem;
+    else
+        return EmptyItem;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::getItem(const size_t num, Item *&item)
+{
+    OFListIterator(Item *) iterator;
+    OFCondition result = gotoItem(num, iterator);
+    if (result.good())
+        item = *iterator;
+    return result;
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getItem(const size_t num)
+{
+    OFListIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+const DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::getItem(const size_t num) const
+{
+    OFListConstIterator(Item *) iterator;
+    if (gotoItem(num, iterator).good())
+        return **iterator;
+    else
+        return EmptyItem;
+}
+
+
+DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::operator[](const size_t num)
+{
+    return getItem(num);
+}
+
+
+const DRTRTTreatmentTerminationReasonCodeSequence::Item &DRTRTTreatmentTerminationReasonCodeSequence::operator[](const size_t num) const
+{
+    return getItem(num);
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::addItem(Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        item = new Item();
+        if (item != NULL)
+        {
+            SequenceOfItems.push_back(item);
+            result = EC_Normal;
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::insertItem(const size_t pos, Item *&item)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        result = gotoItem(pos, iterator);
+        if (result.good())
+        {
+            item = new Item();
+            if (item != NULL)
+            {
+                SequenceOfItems.insert(iterator, 1, item);
+                result = EC_Normal;
+            } else
+                result = EC_MemoryExhausted;
+        } else
+            result = addItem(item);
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::removeItem(const size_t pos)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        OFListIterator(Item *) iterator;
+        if (gotoItem(pos, iterator).good())
+        {
+            delete *iterator;
+            iterator = SequenceOfItems.erase(iterator);
+            result = EC_Normal;
+        } else
+            result = EC_IllegalParameter;
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::read(DcmItem &dataset,
+                                                              const OFString &card,
+                                                              const OFString &type,
+                                                              const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        /* re-initialize object */
+        clear();
+        /* retrieve sequence element from dataset */
+        DcmSequenceOfItems *sequence;
+        result = dataset.findAndGetSequence(DCM_RTTreatmentTerminationReasonCodeSequence, sequence);
+        if (sequence != NULL)
+        {
+            if (checkElementValue(*sequence, card, type, result, moduleName))
+            {
+                DcmStack stack;
+                OFBool first = OFTrue;
+                /* iterate over all sequence items */
+                while (result.good() && sequence->nextObject(stack, first /*intoSub*/).good())
+                {
+                    DcmItem *ditem = OFstatic_cast(DcmItem *, stack.top());
+                    if (ditem != NULL)
+                    {
+                        Item *item = new Item();
+                        if (item != NULL)
+                        {
+                            result = item->read(*ditem);
+                            if (result.good())
+                            {
+                                /* append new item to the end of the list */
+                                SequenceOfItems.push_back(item);
+                                first = OFFalse;
+                            }
+                        } else
+                            result = EC_MemoryExhausted;
+                    } else
+                        result = EC_CorruptedData;
+                }
+            }
+        } else {
+            DcmSequenceOfItems element(DCM_RTTreatmentTerminationReasonCodeSequence);
+            checkElementValue(element, card, type, result, moduleName);
+        }
+    }
+    return result;
+}
+
+
+OFCondition DRTRTTreatmentTerminationReasonCodeSequence::write(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultSequence)
+    {
+        result = EC_MemoryExhausted;
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTTreatmentTerminationReasonCodeSequence);
+        if (sequence != NULL)
+        {
+            result = EC_Normal;
+            /* an empty optional sequence is not written */
+            if ((type == "2") || !SequenceOfItems.empty())
+            {
+                OFListIterator(Item *) iterator = SequenceOfItems.begin();
+                const OFListConstIterator(Item *) last = SequenceOfItems.end();
+                /* iterate over all sequence items */
+                while (result.good() && (iterator != last))
+                {
+                    DcmItem *item = new DcmItem();
+                    if (item != NULL)
+                    {
+                        /* append new item to the end of the sequence */
+                        result = sequence->append(item);
+                        if (result.good())
+                        {
+                            result = (*iterator)->write(*item);
+                            ++iterator;
+                        } else
+                            delete item;
+                    } else
+                        result = EC_MemoryExhausted;
+                }
+                if (result.good())
+                {
+                    /* insert sequence element into the dataset */
+                    result = dataset.insert(sequence, OFTrue /*replaceOld*/);
+                }
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+                if (result.good())
+                {
+                    /* forget reference to sequence object (avoid deletion below) */
+                    sequence = NULL;
+                }
+            }
+            else if (type == "1")
+            {
+                /* empty type 1 sequence not allowed */
+                result = RT_EC_InvalidValue;
+                if (DCM_dcmrtLogger.isEnabledFor(OFLogger::WARN_LOG_LEVEL))
+                    checkElementValue(*sequence, card, type, result, moduleName);
+            }
+            /* delete sequence (if not inserted into the dataset) */
+            delete sequence;
+        }
+    }
+    return result;
+}
+
+
+// end of source file
index 96af41873c9332f592b206bc0ab3605d7805ad0f..c1bdc9de39f3ab6b60422ee6dc7a3b663a2780ba 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -629,10 +629,12 @@ OFCondition DRTToleranceTableSequence::gotoFirstItem()
 OFCondition DRTToleranceTableSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index b645139842b71e19dbc903e0216a7773888fcca6..e68a177d11a194ab3c6a40a2f6a3be69a8fb140f 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTUDISequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTUDISequence::gotoFirstItem()
 OFCondition DRTUDISequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index f9b291b503dead35ae9abd454386864e0324d349..fedfd744376d1b7937952003f9b0e0a6ca7fe755 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -303,10 +303,12 @@ OFCondition DRTVOILUTSequence::gotoFirstItem()
 OFCondition DRTVOILUTSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index fdd3185c40b5a73bade1c1216a0a8d58c9da4c52..0817ae48bcf0eb3e0e443e1636c2eb14a288d24b 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -281,10 +281,12 @@ OFCondition DRTWedgePositionSequence::gotoFirstItem()
 OFCondition DRTWedgePositionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 4c295e98368a0066ce32c4c2187e2fdafa6cd2f2..cbfc9bda47f4eafef0ba310c9b5898710e4cc940 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -243,10 +243,12 @@ OFCondition DRTWADORetrievalSequence::gotoFirstItem()
 OFCondition DRTWADORetrievalSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index e684b681ee726a37486b8e1a334071db629646d6..44e80247b4e11fedc65805cf1a9e3d8826d0bac5 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWADORSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -243,10 +243,12 @@ OFCondition DRTWADORSRetrievalSequence::gotoFirstItem()
 OFCondition DRTWADORSRetrievalSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index b3b19da0b8cc5081a8331be9569ff6f93e953d7b..de60e5ec4f3869b23e54369b41e8f21a1b463c4a 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -529,10 +529,12 @@ OFCondition DRTWedgeSequence::gotoFirstItem()
 OFCondition DRTWedgeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index ca042bbc947f22ddb2dffebdfbe611f9a7a07655..8d06fd737a75a5767ad12d50770dcc0f5d6ca8c6 100644 (file)
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2017, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2017e
- *  File created on 2017-12-05 09:30:54
+ *  Generated automatically from DICOM PS 3.3-2023b
+ *  File created on 2023-05-19 16:00:57
  *
  */
 
@@ -272,10 +272,12 @@ OFCondition DRTXDSRetrievalSequence::gotoFirstItem()
 OFCondition DRTXDSRetrievalSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
-    if (CurrentItem != SequenceOfItems.end())
+    if (++CurrentItem != SequenceOfItems.end())
     {
-        ++CurrentItem;
-        result = EC_Normal;
+        if (*CurrentItem != NULL)
+            result = EC_Normal;
+        else
+            result = EC_CorruptedData;
     }
     return result;
 }
index 5d67f43119cd6a242141dc2d45f4ea53148660fd..c1b7cc675e7c91490f9f7146cae65021ed69e8d2 100644 (file)
@@ -8,6 +8,10 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -22,7 +26,6 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -52,10 +55,7 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -118,16 +118,20 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrov.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
+ ../include/dcmtk/dcmrt/seq/drtars.h ../include/dcmtk/dcmrt/seq/drtarms.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdvhs.h \
  ../include/dcmtk/dcmrt/seq/drtdvrrs.h \
@@ -145,8 +149,9 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiais.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
- ../include/dcmtk/dcmrt/seq/drtmls.h ../include/dcmtk/dcmrt/seq/drtoas.h \
- ../include/dcmtk/dcmrt/seq/drtmas.h ../include/dcmtk/dcmrt/seq/drtopis.h \
+ ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
+ ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
@@ -158,19 +163,22 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpsss.h \
+ ../include/dcmtk/dcmrt/seq/drtplos.h \
+ ../include/dcmtk/dcmrt/seq/drtpros.h \
+ ../include/dcmtk/dcmrt/seq/drtrims.h \
+ ../include/dcmtk/dcmrt/seq/drtrsss.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
  ../include/dcmtk/dcmrt/seq/drtdias.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
- ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrdros.h \
+ ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
  ../include/dcmtk/dcmrt/seq/drtqds.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
- ../include/dcmtk/dcmrt/seq/drtrfors.h \
- ../include/dcmtk/dcmrt/seq/drtrsts.h \
- ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtris.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
@@ -178,15 +186,15 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps1.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs1.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h \
- ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas1.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
- ../include/dcmtk/dcmrt/seq/drtrsrs.h \
- ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
+ ../include/dcmtk/dcmrt/seq/drtrsrs.h ../include/dcmtk/dcmrt/seq/drtrss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs1.h \
  ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
@@ -196,48 +204,61 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspgis.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
- ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h ../include/dcmtk/dcmrt/drtimage.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h ../include/dcmtk/dcmrt/drtimage.h \
  ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtbas.h \
- ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drtes.h \
- ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
- ../include/dcmtk/dcmrt/seq/drtblds5.h \
- ../include/dcmtk/dcmrt/seq/drtbl5.h ../include/dcmtk/dcmrt/seq/drtgas.h \
+ ../include/dcmtk/dcmrt/seq/drtds.h ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h ../include/dcmtk/dcmrt/seq/drtes.h \
+ ../include/dcmtk/dcmrt/seq/drtas2.h ../include/dcmtk/dcmrt/seq/drtags.h \
+ ../include/dcmtk/dcmrt/seq/drtblds2.h \
+ ../include/dcmtk/dcmrt/seq/drtbl2.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
+ ../include/dcmtk/dcmrt/seq/drtgas4.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h ../include/dcmtk/dcmrt/seq/drtfms.h \
+ ../include/dcmtk/dcmrt/seq/drtmls.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
- ../include/dcmtk/dcmrt/seq/drtcss.h ../include/dcmtk/dcmrt/seq/drtrims.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
+ ../include/dcmtk/dcmrt/seq/drtcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps4.h \
  ../include/dcmtk/dcmrt/seq/drtsis.h ../include/dcmtk/dcmrt/seq/drtsins.h \
  ../include/dcmtk/dcmrt/seq/drtvls.h ../include/dcmtk/dcmrt/drtplan.h \
  ../include/dcmtk/dcmrt/seq/drtass.h ../include/dcmtk/dcmrt/seq/drtbads.h \
  ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcshs.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
+ ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../include/dcmtk/dcmrt/seq/drtas1.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \
  ../include/dcmtk/dcmrt/seq/drtcps.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drtgas2.h \
  ../include/dcmtk/dcmrt/seq/drtpvis.h \
  ../include/dcmtk/dcmrt/seq/drtrbos1.h \
  ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
  ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drtfgs.h \
- ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../include/dcmtk/dcmrt/seq/drtrbs3.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
  ../include/dcmtk/dcmrt/seq/drtpss.h ../include/dcmtk/dcmrt/seq/drtfds.h \
  ../include/dcmtk/dcmrt/seq/drtmss.h ../include/dcmtk/dcmrt/seq/drtrsis.h \
  ../include/dcmtk/dcmrt/seq/drtsds.h ../include/dcmtk/dcmrt/seq/drtshds.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
- ../include/dcmtk/dcmrt/seq/drtss.h ../include/dcmtk/dcmrt/seq/drttts.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps2.h ../include/dcmtk/dcmrt/seq/drtss.h \
+ ../include/dcmtk/dcmrt/seq/drttts.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h ../include/dcmtk/dcmrt/drtstrct.h \
+ ../include/dcmtk/dcmrt/seq/drttms1.h ../include/dcmtk/dcmrt/drtstrct.h \
+ ../include/dcmtk/dcmrt/seq/drtpsss.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
+ ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
+ ../include/dcmtk/dcmrt/seq/drtsppcs.h \
  ../include/dcmtk/dcmrt/seq/drtrros.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
@@ -245,11 +266,29 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtsptcs.h \
  ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
- ../include/dcmtk/dcmrt/seq/drtspccs.h ../include/dcmtk/dcmrt/drttreat.h \
+ ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrfors.h \
+ ../include/dcmtk/dcmrt/seq/drtrsts.h \
+ ../include/dcmtk/dcmrt/seq/drtrses.h \
+ ../include/dcmtk/dcmrt/seq/drtssrs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdais.h ../include/dcmtk/dcmrt/drttreat.h \
  ../include/dcmtk/dcmrt/seq/drtfgss.h \
  ../include/dcmtk/dcmrt/seq/drtfsss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
- ../include/dcmtk/dcmrt/seq/drtrtrs4.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtrtrs2.h \
  ../include/dcmtk/dcmrt/seq/drttscds.h \
  ../include/dcmtk/dcmrt/seq/drttsmds.h
 tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -271,6 +310,10 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
@@ -290,7 +333,6 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -312,10 +354,7 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -380,14 +419,17 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtecs.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../include/dcmtk/dcmrt/seq/drtcpis.h ../include/dcmtk/dcmrt/seq/drtics.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtcgis.h ../include/dcmtk/dcmrt/seq/drtces.h \
  ../include/dcmtk/dcmrt/seq/drtois.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
@@ -404,6 +446,7 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
  ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
  ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
@@ -422,7 +465,11 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../include/dcmtk/dcmrt/seq/drtpcs.h ../include/dcmtk/dcmrt/seq/drtrcs.h \
  ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h \
- ../include/dcmtk/dcmrt/seq/drtrros.h \
+ ../include/dcmtk/dcmrt/seq/drtsppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrros.h ../include/dcmtk/dcmrt/seq/drtars.h \
+ ../include/dcmtk/dcmrt/seq/drtarms.h \
+ ../include/dcmtk/dcmrt/seq/drtpass.h \
+ ../include/dcmtk/dcmrt/seq/drtpasms.h \
  ../include/dcmtk/dcmrt/seq/drtrpps.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
  ../include/dcmtk/dcmrt/seq/drtrics.h \
@@ -430,7 +477,11 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrs.h \
  ../include/dcmtk/dcmrt/seq/drtrrros.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrccs.h \
+ ../include/dcmtk/dcmrt/seq/drttrtcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../include/dcmtk/dcmrt/seq/drtrfors.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
@@ -442,6 +493,7 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpis.h \
  ../include/dcmtk/dcmrt/seq/drtras.h \
@@ -455,8 +507,20 @@ tcontour.o: tcontour.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtscs.h ../include/dcmtk/dcmrt/seq/drtsss.h \
  ../include/dcmtk/dcmrt/seq/drtssrcs.h \
  ../include/dcmtk/dcmrt/seq/drtssrs.h \
- ../include/dcmtk/dcmrt/seq/drtscris.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
+ ../include/dcmtk/dcmrt/seq/drtcvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdcvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvdas.h \
+ ../include/dcmtk/dcmrt/seq/drtafcs.h \
+ ../include/dcmtk/dcmrt/seq/drtancs.h \
+ ../include/dcmtk/dcmrt/seq/drtscvs.h \
+ ../include/dcmtk/dcmrt/seq/drtcvcss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdsis.h \
+ ../include/dcmtk/dcmrt/seq/drtecvs.h \
+ ../include/dcmtk/dcmrt/seq/drtecvis.h \
+ ../include/dcmtk/dcmrt/seq/drtosirs.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drtrdais.h \
+ ../include/dcmtk/dcmrt/seq/drtscris.h
 tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -476,6 +540,10 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
@@ -495,7 +563,6 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -525,6 +592,10 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
+ ../../ofstd/include/dcmtk/ofstd/diag/push.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/useafree.def \
+ ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../ofstd/include/dcmtk/ofstd/oflimits.h \
  ../../config/include/dcmtk/config/arith.h \
  ../../ofstd/include/dcmtk/ofstd/oferror.h \
@@ -544,7 +615,6 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../oflog/include/dcmtk/oflog/appender.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
- ../../ofstd/include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../../oflog/include/dcmtk/oflog/layout.h \
  ../../oflog/include/dcmtk/oflog/streams.h \
  ../../oflog/include/dcmtk/oflog/helpers/pointer.h \
@@ -567,10 +637,7 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcistrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../../ofstd/include/dcmtk/ofstd/ofdiag.h \
- ../../ofstd/include/dcmtk/ofstd/diag/push.def \
  ../../ofstd/include/dcmtk/ofstd/diag/ignrattr.def \
- ../../ofstd/include/dcmtk/ofstd/diag/pop.def \
  ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdicent.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
@@ -637,21 +704,33 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtchs.h ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../include/dcmtk/dcmrt/seq/drtcshs.h \
- ../include/dcmtk/dcmrt/seq/drtrris9.h ../include/dcmtk/dcmrt/seq/drtbs.h \
+ ../include/dcmtk/dcmrt/seq/drtrris3.h ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
- ../include/dcmtk/dcmrt/seq/drtbl2.h ../include/dcmtk/dcmrt/seq/drtcos.h \
+ ../include/dcmtk/dcmrt/seq/drtbl1.h ../include/dcmtk/dcmrt/seq/drtcos.h \
  ../include/dcmtk/dcmrt/seq/drtcps.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
+ ../include/dcmtk/dcmrt/seq/drteblos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbdgs.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../include/dcmtk/dcmrt/seq/drtrds.h ../include/dcmtk/dcmrt/seq/drtwps.h \
- ../include/dcmtk/dcmrt/seq/drtgas.h ../include/dcmtk/dcmrt/seq/drtpvis.h \
+ ../include/dcmtk/dcmrt/seq/drtdfss.h \
+ ../include/dcmtk/dcmrt/seq/drteblds.h \
+ ../include/dcmtk/dcmrt/seq/drtdtcs.h \
+ ../include/dcmtk/dcmrt/seq/drtfbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdds.h \
+ ../include/dcmtk/dcmrt/seq/drtpbdos.h \
+ ../include/dcmtk/dcmrt/seq/drtudis.h \
+ ../include/dcmtk/dcmrt/seq/drtgas2.h \
+ ../include/dcmtk/dcmrt/seq/drtidcs.h \
+ ../include/dcmtk/dcmrt/seq/drtpvis.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h \
  ../include/dcmtk/dcmrt/seq/drtrbos1.h \
  ../include/dcmtk/dcmrt/seq/drtrris1.h ../include/dcmtk/dcmrt/seq/drtws.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtcttcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcsrs.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
@@ -665,9 +744,14 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtdcs.h ../include/dcmtk/dcmrt/seq/drtdss.h \
  ../include/dcmtk/dcmrt/seq/drtdspcs.h \
  ../include/dcmtk/dcmrt/seq/drtdrs.h ../include/dcmtk/dcmrt/seq/drteas.h \
- ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs8.h \
- ../include/dcmtk/dcmrt/seq/drtrbas8.h \
- ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
+ ../include/dcmtk/dcmrt/seq/drtfgs.h ../include/dcmtk/dcmrt/seq/drtrbs3.h \
+ ../include/dcmtk/dcmrt/seq/drtdccs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdcks.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtmucs.h \
+ ../include/dcmtk/dcmrt/seq/drtrsos.h \
+ ../include/dcmtk/dcmrt/seq/drtrbas2.h \
+ ../include/dcmtk/dcmrt/seq/drtrdrs3.h \
  ../include/dcmtk/dcmrt/seq/drtgms.h ../include/dcmtk/dcmrt/seq/drtgmcs.h \
  ../include/dcmtk/dcmrt/seq/drtgpis.h \
  ../include/dcmtk/dcmrt/seq/drtipiqs.h \
@@ -679,6 +763,7 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h ../include/dcmtk/dcmrt/seq/drtmris.h \
  ../include/dcmtk/dcmrt/seq/drtoas.h ../include/dcmtk/dcmrt/seq/drtmas.h \
+ ../include/dcmtk/dcmrt/seq/drtnmas.h \
  ../include/dcmtk/dcmrt/seq/drtopis.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h ../include/dcmtk/dcmrt/seq/drtpss.h \
  ../include/dcmtk/dcmrt/seq/drtfds.h ../include/dcmtk/dcmrt/seq/drtmss.h \
@@ -687,11 +772,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpsics.h \
  ../include/dcmtk/dcmrt/seq/drtpscs.h \
  ../include/dcmtk/dcmrt/seq/drtppcs.h \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.h \
+ ../include/dcmtk/dcmrt/seq/drtpcxs.h \
  ../include/dcmtk/dcmrt/seq/drtcims.h \
- ../include/dcmtk/dcmrt/seq/drtmucs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
  ../include/dcmtk/dcmrt/seq/drtpdecs.h \
@@ -699,6 +781,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpdeds.h \
  ../include/dcmtk/dcmrt/seq/drtpcs.h \
  ../include/dcmtk/dcmrt/seq/drtrppcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrvcs.h \
+ ../include/dcmtk/dcmrt/seq/drtrdps.h \
  ../include/dcmtk/dcmrt/seq/drtrims.h ../include/dcmtk/dcmrt/seq/drtris.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
@@ -707,7 +791,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h ../include/dcmtk/dcmrt/seq/drtxrs.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
  ../include/dcmtk/dcmrt/seq/drtrppss.h \
- ../include/dcmtk/dcmrt/seq/drtrrtps3.h \
+ ../include/dcmtk/dcmrt/seq/drtrpprs.h \
+ ../include/dcmtk/dcmrt/seq/drtrtps2.h \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtrsss.h ../include/dcmtk/dcmrt/seq/drtrss.h \
  ../include/dcmtk/dcmrt/seq/drtrpis.h ../include/dcmtk/dcmrt/seq/drtras.h \
@@ -723,5 +808,5 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtscris.h \
  ../include/dcmtk/dcmrt/seq/drttts.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
- ../include/dcmtk/dcmrt/seq/drttms9.h \
- ../include/dcmtk/dcmrt/seq/drtudis.h
+ ../include/dcmtk/dcmrt/seq/drttms1.h \
+ ../include/dcmtk/dcmrt/seq/drttscs.h
index d6f786250df808b1278c13a683d43ef74fe04dd9..718daf5ee9afaa33ea83bbd05cd326d4baf69a88 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2015-2022, Open Connections GmbH
+ *  Copyright (C) 2015-2023, Open Connections GmbH
  *
  *  All rights reserved.  See COPYRIGHT file for details.
  *
@@ -1407,8 +1407,7 @@ OFCondition DcmSegmentation::decompress(DcmDataset& dset)
     // If the original transfer syntax could have been lossy, print warning
     if (dset.hasRepresentation(EXS_LittleEndianExplicit, NULL))
     {
-        if (xfer.isEncapsulated() && (xfer.getXfer() != EXS_RLELossless)
-            && (xfer.getXfer() != EXS_DeflatedLittleEndianExplicit))
+        if (xfer.isEncapsulated() && (xfer != EXS_RLELossless) && (xfer != EXS_DeflatedLittleEndianExplicit))
         {
             DCMSEG_WARN("Dataset has been compressed using a (possibly) lossy compression scheme (ignored)");
         }
@@ -1418,7 +1417,7 @@ OFCondition DcmSegmentation::decompress(DcmDataset& dset)
     else if (xfer.isEncapsulated())
     {
         // RLE compression is fine (truly lossless). Deflated is handled internally by DCMTK.
-        if (xfer.getXfer() == EXS_RLELossless)
+        if (xfer == EXS_RLELossless)
         {
             DCMSEG_DEBUG("DICOM file is RLE-compressed, converting to uncompressed transfer syntax first");
             result = DcmIODUtil::decompress(dset);
index 2056b1c7e1dc591d41584c1d9ab8c9d2be31bab7..1c2542dc8b3a8dc81a0c94d2a2c990201db18d06 100644 (file)
@@ -316,13 +316,11 @@ static void checkConcatenationInstance(size_t numInstance, DcmSegmentation* srcI
 
     FunctionalGroups::const_iterator srcShared = srcInstance->getFunctionalGroups().getShared()->begin();
     FunctionalGroups::const_iterator cShared   = concat->getFunctionalGroups().getShared()->begin();
-    size_t numShared                           = 0;
     do
     {
         OFCHECK(srcShared->second->compare(*cShared->second) == 0);
         srcShared++;
         cShared++;
-        numShared++;
     } while ((srcShared != srcInstance->getFunctionalGroups().getShared()->end())
              && (cShared != concat->getFunctionalGroups().getShared()->end()));
     OFCHECK((srcShared == srcInstance->getFunctionalGroups().getShared()->end())
index f7067b73ccb1211a53bc595b155aeb3f2744df32..6334a0fe78cce356f7a136ddcf980008d689f2f1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2021, OFFIS e.V.
+ *  Copyright (C) 2000-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -124,8 +124,8 @@ int main(int argc, char *argv[])
   OFCommandLine cmd;
   cmd.setOptionColumns(LONGCOL, SHORTCOL);
   cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
-  cmd.addParam("dcmfile-in",  "DICOM input filename to be processed");
-  cmd.addParam("dcmfile-out", "DICOM output filename", OFCmdParam::PM_Optional);
+  cmd.addParam("dcmfile-in",  "DICOM input filename to be processed\n(\"-\" for stdin)");
+  cmd.addParam("dcmfile-out", "DICOM output filename\n(\"-\" for stdout)", OFCmdParam::PM_Optional);
 
   cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
       cmd.addOption("--help",                      "-h",        "print this help text and exit", OFCommandLine::AF_Exclusive);
index 5cd097d1666ff1bc49e4fc197433607184800d5f..e57388809ad3485bb460630f572533b7685b655b 100644 (file)
@@ -20,19 +20,19 @@ object to an output file (\e dcmfile-out).
 
 Five digital signature operations are supported:
 
-\li verification of all signatures in the DICOM file
-\li creation of a new digital signature located in the main dataset,
-\li creation of a new digital signature in an item of a sequence embedded
-    within the dataset,
-\li removal of a single digital signature from the DICOM file, and
-\li removal of all digital signatures from the DICOM file.
+- verification of all signatures in the DICOM file
+- creation of a new digital signature located in the main dataset,
+- creation of a new digital signature in an item of a sequence embedded within
+  the dataset,
+- removal of a single digital signature from the DICOM file, and
+- removal of all digital signatures from the DICOM file.
 
 \section dcmsign_parameters PARAMETERS
 
 \verbatim
-dcmfile-in   DICOM input filename to be processed
+dcmfile-in   DICOM input filename to be processed ("-" for stdin)
 
-dcmfile-out  DICOM output filename
+dcmfile-out  DICOM output filename ("-" for stdout)
 \endverbatim
 
 \section dcmsign_options OPTIONS
@@ -582,6 +582,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dcmsign_copyright COPYRIGHT
 
-Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 9e81a22d27cd56cf0bf40baf4b56616ca378035e..b104ec1e8167a538f95b2b20dba0e664498b8ff9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2021, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,6 +49,7 @@
 #include "dcmtk/dcmsign/sitsfs.h"
 
 BEGIN_EXTERN_C
+#include <openssl/conf.h>
 #include <openssl/evp.h>
 #include <openssl/err.h>
 #include <openssl/ssl.h>
@@ -67,6 +68,7 @@ static OSSL_PROVIDER *defaultProvider = NULL;
 
 void DcmSignature::initializeLibrary()
 {
+  OPENSSL_no_config();
   SSL_library_init();
   SSL_load_error_strings();
   OpenSSL_add_all_algorithms();
@@ -964,7 +966,7 @@ OFCondition DcmSignature::getCurrentMacXferSyntaxName(OFString& str)
     if ((((DcmElement *)(stack.top()))->getString(uid)).good() && uid)
     {
       DcmXfer xf(uid);
-      if (xf.getXfer() == EXS_Unknown) str=uid; else
+      if (xf == EXS_Unknown) str=uid; else
       {
         str = "=";
         str.append(xf.getXferName());
index 2f2474a2e30ce82c2c215910edb2ffa7303ef7f4..c3c9f84885374e9cde1e0aa4b6b8fd232bd72e89 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2019, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -143,7 +143,7 @@ OFCondition SiMACConstructor::encodeDigitalSignatureItem(
     {
       if (element->isSignable())
       {
-        tagkey = element->getTag().getXTag();
+        tagkey = element->getTag().getTagKey();
         if ((tagkey != DCM_CertificateOfSigner) &&
             (tagkey != DCM_Signature) &&
             (tagkey != DCM_CertifiedTimestampType) &&
index 5f483d5aba221bb981635063d7d6e4de616991cb..6f03f92b71e9f03439fb7a4dfa2da0dc20843383 100644 (file)
@@ -212,7 +212,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dsrfile-in",   "DICOM SR input filename to be rendered", OFCmdParam::PM_Mandatory);
+    cmd.addParam("dsrfile-in",   "DICOM SR input filename to be rendered\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory);
     cmd.addParam("htmlfile-out", "HTML/XHTML output filename (default: stdout)", OFCmdParam::PM_Optional);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
index 7d6f67a799630f6d0353f79a0f27b8b7179c6a11..5d90813d416592648ff9ad0087afea7d5db341d2 100644 (file)
@@ -212,7 +212,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dsrfile-in",  "DICOM SR input filename to be converted", OFCmdParam::PM_Mandatory);
+    cmd.addParam("dsrfile-in",  "DICOM SR input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory);
     cmd.addParam("xmlfile-out", "XML output filename (default: stdout)", OFCmdParam::PM_Optional);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
index e1f3d23d8707ee5ea972c8797f67f53d6ad8d747..e20368208aeb4eb008e12331d594ad3ca740be0a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2022, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #include "dcmtk/ofstd/ofchrenc.h"     /* for OFCharacterEncoding */
 #endif
 
-#ifndef HAVE_WINDOWS_H
-#define ANSI_ESCAPE_CODES_AVAILABLE
-#endif
-
 #define OFFIS_CONSOLE_APPLICATION "dsrdump"
 
 static OFLogger dsrdumpLogger = OFLog::getLogger("dcmtk.apps." OFFIS_CONSOLE_APPLICATION);
@@ -117,7 +113,7 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("dsrfile-in", "DICOM SR input filename to be dumped", OFCmdParam::PM_MultiMandatory);
+    cmd.addParam("dsrfile-in", "DICOM SR input filename to be dumped\n(\"-\" for stdin)", OFCmdParam::PM_MultiMandatory);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
       cmd.addOption("--help",                   "-h",   "print this help text and exit", OFCommandLine::AF_Exclusive);
@@ -171,11 +167,9 @@ int main(int argc, char *argv[])
       cmd.addSubGroup("enhanced encoding mode:");
         cmd.addOption("--indicate-enhanced",    "+Pe",  "indicate that enhanced mode is used for codes");
         cmd.addOption("--no-enhanced-mode",     "-Pe",  "do not indicate enhanced mode (default)");
-#ifdef ANSI_ESCAPE_CODES_AVAILABLE
       cmd.addSubGroup("color:");
         cmd.addOption("--print-color",          "+C",   "use ANSI escape codes for colored output");
         cmd.addOption("--no-color",             "-C",   "do not use any ANSI escape codes (default)");
-#endif
 
     /* evaluate command line */
     prepareCmdLineArgs(argc, argv, OFFIS_CONSOLE_APPLICATION);
@@ -309,14 +303,12 @@ int main(int argc, char *argv[])
             opt_printFlags &= ~DSRTypes::PF_indicateEnhancedEncodingMode;
         cmd.endOptionBlock();
 
-#ifdef ANSI_ESCAPE_CODES_AVAILABLE
         cmd.beginOptionBlock();
         if (cmd.findOption("--print-color"))
             opt_printFlags |= DSRTypes::PF_useANSIEscapeCodes;
         if (cmd.findOption("--no-color"))
             opt_printFlags &= ~DSRTypes::PF_useANSIEscapeCodes;
         cmd.endOptionBlock();
-#endif
     }
 
     /* print resource identifier */
index 9863e822aa02ad67963696813991867258af7ca7..da5d2c29ae848c8e7c751414fca80e7c4ffc2c9d 100644 (file)
@@ -94,8 +94,8 @@ int main(int argc, char *argv[])
     cmd.setOptionColumns(LONGCOL, SHORTCOL);
     cmd.setParamColumn(LONGCOL + SHORTCOL + 4);
 
-    cmd.addParam("xmlfile-in",   "XML input filename to be converted (stdin: \"-\")", OFCmdParam::PM_Mandatory);
-    cmd.addParam("dsrfile-out",  "DICOM SR output filename", OFCmdParam::PM_Mandatory);
+    cmd.addParam("xmlfile-in",   "XML input filename to be converted\n(\"-\" for stdin)", OFCmdParam::PM_Mandatory);
+    cmd.addParam("dsrfile-out",  "DICOM SR output filename\n(\"-\" for stdout)", OFCmdParam::PM_Mandatory);
 
     cmd.addGroup("general options:", LONGCOL, SHORTCOL + 2);
       cmd.addOption("--help",                  "-h",     "print this help text and exit", OFCommandLine::AF_Exclusive);
index 3dfae037cc0f89ea5b3ff50d9cccd4759a2a4c43..a99c44f0a37056eca0ace0772a0fcf35bb371d55 100644 (file)
@@ -30,7 +30,7 @@ with a particular transfer syntax.
 \section dsr2html_parameters PARAMETERS
 
 \verbatim
-dsrfile-in    DICOM SR input filename to be rendered
+dsrfile-in    DICOM SR input filename to be rendered ("-" for stdin)
 
 htmlfile-out  HTML/XHTML output filename (default: stdout)
 \endverbatim
@@ -137,16 +137,17 @@ specific character set:
          check all data elements with string values
          (default: only PN, LO, LT, SH, ST, UC and UT)
 
-         # this option is only used for the mapping to an appropriate
-         # HTML/XHTML character encoding, but not for the conversion
-         # to UTF-8
+         # this option is only used for the extended check whether
+         # the Specific Character Set (0008,0005) attribute should be
+         # present, but not for the conversion of unaffected element
+         # values to UTF-8 (e.g. element values with a VR of CS)
 
   +U8  --convert-to-utf8
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from an underlying character encoding library
-         # (see output of --version on which one is available)
+         # requires support from an underlying character encoding
+         # library (see output of --version on which one is available)
 \endverbatim
 
 \subsection dsr2html_output_options output options
@@ -358,6 +359,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dsr2html_copyright COPYRIGHT
 
-Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 668f9248afc1a338cfddb1a941247dd99af30fef..67d85dbdbf6db0b761689ebd10036a0af00154d0 100644 (file)
@@ -32,7 +32,7 @@ with a particular transfer syntax.
 \section dsr2xml_parameters PARAMETERS
 
 \verbatim
-dsrfile-in   DICOM SR input filename to be converted
+dsrfile-in   DICOM SR input filename to be converted ("-" for stdin)
 
 xmlfile-out  XML output filename (default: stdout)
 \endverbatim
@@ -134,15 +134,17 @@ specific character set:
          check all data elements with string values
          (default: only PN, LO, LT, SH, ST, UC and UT)
 
-         # this option is only used for the mapping to an appropriate
-         # XML character encoding, but not for the conversion to UTF-8
+         # this option is only used for the extended check whether
+         # the Specific Character Set (0008,0005) attribute should be
+         # present, but not for the conversion of unaffected element
+         # values to UTF-8 (e.g. element values with a VR of CS)
 
   +U8  --convert-to-utf8
          convert all element values that are affected
          by Specific Character Set (0008,0005) to UTF-8
 
-         # requires support from an underlying character encoding library
-         # (see output of --version on which one is available)
+         # requires support from an underlying character encoding
+         # library (see output of --version on which one is available)
 \endverbatim
 
 \subsection dsr2xml_output_options output options
@@ -346,6 +348,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dsr2xml_copyright COPYRIGHT
 
-Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index 655f40103bd0f5c92aca43d00a5c392813d7325e..67fd5ecad948460a496d44d4340b5e89c3812c8e 100644 (file)
@@ -30,7 +30,7 @@ with a particular transfer syntax.
 \section dsrdump_parameters PARAMETERS
 
 \verbatim
-dsrfile-in  DICOM SR input filename to be dumped
+dsrfile-in  DICOM SR input filename to be dumped ("-" for stdin)
 \endverbatim
 
 \section dsrdump_options OPTIONS
@@ -195,12 +195,8 @@ color:
   +C    --print-color
           use ANSI escape codes for colored output
 
-          # not available on Windows systems
-
   -C    --no-color
           do not use any ANSI escape codes (default)
-
-          # not available on Windows systems
 \endverbatim
 
 \section dsrdump_notes NOTES
@@ -294,6 +290,6 @@ It is an error if no data dictionary can be loaded.
 
 \section dsrdump_copyright COPYRIGHT
 
-Copyright (C) 2000-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index f5f66c75110b6d2a4a018060ccce7817671d67d8..e2077a6a40205d0cbb43a664af368fd1070316dd 100644 (file)
@@ -27,9 +27,9 @@ An appropriate XML file can be created using the \b dsr2xml tool (option
 \section xml2dsr_parameters PARAMETERS
 
 \verbatim
-xmlfile-in   XML input filename to be converted (stdin: "-")
+xmlfile-in   XML input filename to be converted ("-" for stdin)
 
-dsrfile-out  DICOM SR output filename
+dsrfile-out  DICOM SR output filename ("-" for stdout)
 \endverbatim
 
 \section xml2dsr_options OPTIONS
@@ -311,6 +311,6 @@ It is an error if no data dictionary can be loaded.
 
 \section xml2dsr_copyright COPYRIGHT
 
-Copyright (C) 2003-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2003-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index b92f7630d81cbf86bbfa2c958515c854e31d1603..e537a9ed85c7aaa6c960ac45661ac7f92f1fe019 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID100_QuantitativeDiagnosticImagingProcedure
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:58 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:44 by J. Riesmeier
  *
  */
 
index 107ac986f4915c75d84b7c7f458655fed833931f..ae9915421ca54abefae18e1964136fdc9b461979 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10013_CTAcquisitionType
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:11 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:57:00 by J. Riesmeier
  *
  */
 
index 9abbe5a928f047390c53045955e97f779e15509f..a28bbabf30e7d1442e8a703d3a0cddf8322c2966 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10033_CTReconstructionAlgorithm
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:12 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:57:01 by J. Riesmeier
  *
  */
 
index 4bfb430f49277d6cc790549ec79813f70468e02e..fc75b5bc73dd55ce76e64ce3856b5675e5b1bb2f 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID11_AdministrationRoute
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:56 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:42 by J. Riesmeier
  *
  */
 
index 317903bea076609e1b0ddfb5209c0635eaf92ded..151f4235d6d98bffa2ca321b49f6faf1a6cb5ddb 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID218_QuantitativeImageFeature
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:59 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:46 by J. Riesmeier
  *
  */
 
index dabd762533e8c3ec56b17e23d075396a7dd015bb..4fde4b4609457551d888b6c07bd444f00061b7e8 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID244_Laterality
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:00 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:47 by J. Riesmeier
  *
  */
 
index 74ae08181ea0942f2f6011b6f73ad26ee32cc42b..f2a7b9474e85dbe59c1f8a4bd0688b0044025fa4 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID247_LateralityLeftRightOnly
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:01 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:48 by J. Riesmeier
  *
  */
 
index 322395d0b12da2ac4ceb9ec07e35068b73043f6f..ecac6c53f61629a9b9494bbf54b3167e349166bc 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID29_AcquisitionModality
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:57 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:43 by J. Riesmeier
  *
  */
 
index 48afde06da737fc9118edc4f21d757e8e9426523..6b42b5d6f2d725bb498aef2c738ddc8f7b7fb4e3 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4020_PETRadionuclide
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:01 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:48 by J. Riesmeier
  *
  */
 
index f0ca8e26343c71939a69bb6412f27b481b5361c5..cd0e0d682452fd309d6a4dde1f204c86aeb8b2c8 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4021_PETRadiopharmaceutical
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:02 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:49 by J. Riesmeier
  *
  */
 
@@ -28,7 +28,7 @@
 
 /** Implementation of DCMR Context Group:
  *  CID 4021 - PET Radiopharmaceutical.
- *  (type: extensible, version: 20201116)
+ *  (type: extensible, version: 20221201)
  */
 class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
   : public DSRContextGroup
@@ -134,7 +134,7 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
         Florbetaben_F18,
         /// (456995000,SCT,"Florbetapir F^18^")
         Florbetapir_F18,
-        /// (C000591008,MSH,"Flortaucipir F^18^")
+        /// (879808000,SCT,"Flortaucipir F^18^")
         Flortaucipir_F18,
         /// (126503,DCM,"Flubatine F^18^")
         Flubatine_F18,
@@ -154,8 +154,8 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
         Fluorocholine_F18,
         /// (35321007,SCT,"Fluorodeoxyglucose F^18^")
         Fluorodeoxyglucose_F18,
-        /// (C1831937,UMLS,"Fluoroestradiol (FES) F^18^")
-        FluoroestradiolFES_F18,
+        /// (926372005,SCT,"Fluoroestradiol F^18^")
+        Fluoroestradiol_F18,
         /// (C1541539,UMLS,"Fluoroetanidazole F^18^")
         Fluoroetanidazole_F18,
         /// (5811000122108,SCT,"Fluoro-L-dopa F^18^")
@@ -164,8 +164,8 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
         Fluoromethane_F18,
         /// (422598008,SCT,"Fluoromisonidazole F^18^")
         Fluoromisonidazole_F18,
-        /// (C2934038,UMLS,"Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^")
-        FluoropropylDihydrotetrabenazineDTBZ_F18,
+        /// (C2934038,UMLS,"Fluoropropyl-dihydrotetrabenazine F^18^")
+        FluoropropylDihydrotetrabenazine_F18,
         /// (126707,DCM,"Fluorotriopride F^18^")
         Fluorotriopride_F18,
         /// (425236000,SCT,"Fluorouracil F^18^")
@@ -206,10 +206,10 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
         MK6240_F18,
         /// (126738,DCM,"Mogamulizumab ^89^Zr")
         Mogamulizumab_89Zr,
-        /// (126510,DCM,"Monoclonal Antibody (mAb) ^64^Cu")
-        MonoclonalAntibodymAb_64Cu,
-        /// (126511,DCM,"Monoclonal Antibody (mAb) ^89^Zr")
-        MonoclonalAntibodymAb_89Zr,
+        /// (126510,DCM,"Monoclonal Antibody ^64^Cu")
+        MonoclonalAntibody_64Cu,
+        /// (126511,DCM,"Monoclonal Antibody ^89^Zr")
+        MonoclonalAntibody_89Zr,
         /// (423249007,SCT,"Monoclonal antibody I^124^")
         MonoclonalAntibody_I124,
         /// (126753,DCM,"Nanocolloidal albumin ^89^Zr")
@@ -286,14 +286,14 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
         THK5317_F18,
         /// (C4279748,UMLS,"THK5351 F^18^")
         THK5351_F18,
-        /// (129502002,SCT,"Thymidine (FLT) F^18^")
-        ThymidineFLT_F18,
+        /// (129502002,SCT,"Thymidine F^18^")
+        Thymidine_F18,
         /// (126512,DCM,"Trastuzumab ^89^Zr")
         Trastuzumab_89Zr,
         /// (126749,DCM,"TRC105 ^89^Zr")
         TRC105_89Zr,
-        /// (C1742831,UMLS,"tyrosine-3-octreotate Ga^68^")
-        Tyrosine3Octreotate_Ga68,
+        /// (724025002,SCT,"Dotatate Ga^68^")
+        Dotatate_Ga68,
         /// (126739,DCM,"Ublituximab ^89^Zr")
         Ublituximab_89Zr,
         /// (C4506788,UMLS,"UCB-J C^11^")
index fff04f1432d9134d2338c32f7a100cb4cb18de22..ac6b04e9c3010aff43ca0a89b6dd55dd754c3608 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4031_CommonAnatomicRegion
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:03 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:50 by J. Riesmeier
  *
  */
 
@@ -28,7 +28,7 @@
 
 /** Implementation of DCMR Context Group:
  *  CID 4031 - Common Anatomic Region.
- *  (type: extensible, version: 20220922)
+ *  (type: extensible, version: 20221224)
  */
 class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion
   : public DSRContextGroup
@@ -198,7 +198,7 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegion
         Pelvis,
         /// (1231522001,SCT,"Pelvis and lower extremities")
         PelvisAndLowerExtremities,
-        /// (113681,DCM,"Phantom")
+        /// (706342009,SCT,"Phantom")
         Phantom,
         /// (41216001,SCT,"Prostate")
         Prostate,
index 7668915249cbfb35e899607a60d1b0637a7ddc6e..43d0529a471bfdf4899a64bebffeee3d7298460e 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID42_NumericValueQualifier
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:57 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:44 by J. Riesmeier
  *
  */
 
index a0017011e9fc05c9980217c8fabe0bf1077fa4a1..c87ccef1134ecf856ed56589668cb27dedaccf33 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID6147_ResponseCriteria
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:03 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:51 by J. Riesmeier
  *
  */
 
index 706fc3d8cce03dcebb3912961393787884c799af..cc230ed88198de9995d7b0c2daa72562a701fd96 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7021_MeasurementReportDocumentTitle
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:04 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:52 by J. Riesmeier
  *
  */
 
index 21774be5c8d09abf24b98f3e4a50e5055d3bc778..616bc138944b6fd89bb89d450cb627120e88b35e 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7181_AbstractMultiDimensionalImageModelComponentUnit
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:05 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:53 by J. Riesmeier
  *
  */
 
index 0648a7420cb0fd0bc45f4b7acc39fe9d051944e3..84fdafa7652afca24fc07db55bcfe32e5cca9d09 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7445_DeviceParticipatingRole
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:06 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:54 by J. Riesmeier
  *
  */
 
index f33e21ba64d223c53c1931b8619ae0426b02df73..a572d2536998ad7f645f4f983c87fc5fca765721 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7452_OrganizationalRole
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:06 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:55 by J. Riesmeier
  *
  */
 
index fe318cfe4ec019c611218b9be13a3afba0f2c2be..3114a80b3620cb5cb963b2c0338513dd1929d00f 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7453_PerformingRole
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:07 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:56 by J. Riesmeier
  *
  */
 
index 92ba82c94a2d5e735233eed8629aa9e16b403590..13d005b40d32dbac9e44bbde412ce094aae12516 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7464_GeneralRegionOfInterestMeasurementModifier
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:08 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:57 by J. Riesmeier
  *
  */
 
index bc0111687e5b65f250f6b95d23aa5da52d4aeab6..0f335205533999847f0fd1c924cb384957797c75 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7469_GenericIntensityAndSizeMeasurement
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:09 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:58 by J. Riesmeier
  *
  */
 
index e7ba5e43d13602f3213f1ed3e7a120a8a4aea194..c3fd2704f12cf9702726a6b529db491975aa98a5 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7551_GenericPurposeOfReferenceToImagesAndCoordinatesInMeasurement
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:10 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:59 by J. Riesmeier
  *
  */
 
index 0ae8168bc78e4e0431b362be67fe37737ff7933d..c9ebb30c37b281b358c1da0d403f5b83140a3ae6 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file with DICOM Controlled Terminology Code Definitions (Coding Scheme "DCM", Version "01")
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:36:18 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023c
+ *  File created on 2023-07-14 12:40:27 by J. Riesmeier
  *
  */
 
@@ -34,8 +34,8 @@
  *  code definitions  *
  *--------------------*/
 
-// total number of codes: 4658
-// - retired: 201
+// total number of codes: 4706
+// - retired: 202
 // - no name: 27
 // - not unique: 17
 
 #define CODE_DCM_OphthalmicVisualField                                     DSRBasicCodedEntry("OPV", "DCM", "Ophthalmic Visual Field")
 #define CODE_DCM_OpticalSurfaceScanner                                     DSRBasicCodedEntry("OSS", "DCM", "Optical Surface Scanner")
 #define CODE_DCM_OtherModality                                             DSRBasicCodedEntry("OT", "DCM", "Other Modality")
+#define CODE_DCM_Photoacoustic                                             DSRBasicCodedEntry("PA", "DCM", "Photoacoustic")
 #define CODE_DCM_Plan                                                      DSRBasicCodedEntry("PLAN", "DCM", "Plan")
 #define CODE_DCM_PositionSensor                                            DSRBasicCodedEntry("POS", "DCM", "Position Sensor")
 #define CODE_DCM_PresentationState                                         DSRBasicCodedEntry("PR", "DCM", "Presentation State")
 #define CODE_DCM_VascularityPresentImmediatelyAdjacentToLesion             DSRBasicCodedEntry("111376", "DCM", "Vascularity present immediately adjacent to lesion")
 #define CODE_DCM_DiffuselyIncreasedVascularityInSurroundingTissue          DSRBasicCodedEntry("111377", "DCM", "Diffusely increased vascularity in surrounding tissue")
 #define CODE_DCM_CorrelationToOtherFindings                                DSRBasicCodedEntry("111380", "DCM", "Correlation to other Findings")
-#define CODE_DCM_CorrelatesToPhysicalExamFindings                          DSRBasicCodedEntry("111381", "DCM", "Correlates to physical exam findings")
+#define CODE_DCM_CorrelatesToPhysicalExaminationFindings                   DSRBasicCodedEntry("111381", "DCM", "Correlates to physical examination findings")
 #define CODE_DCM_CorrelatesToMammographyFindings                           DSRBasicCodedEntry("111382", "DCM", "Correlates to mammography findings")
 #define CODE_DCM_CorrelatesToMRIFindings                                   DSRBasicCodedEntry("111383", "DCM", "Correlates to MRI findings")
 #define CODE_DCM_CorrelatesToUltrasoundFindings                            DSRBasicCodedEntry("111384", "DCM", "Correlates to ultrasound findings")
 #define CODE_DCM_FollowUpAtShortIntervalFromPriorStudy                     DSRBasicCodedEntry("111416", "DCM", "Follow-up at short interval from prior study")
 #define CODE_DCM_HistoryOfBreastAugmentation_asymptomatic                  DSRBasicCodedEntry("111417", "DCM", "History of breast augmentation, asymptomatic")
 #define CODE_DCM_ReviewOfAnOutsideStudy                                    DSRBasicCodedEntry("111418", "DCM", "Review of an outside study")
-#define CODE_DCM_AdditionalEvaluationRequestedFromAbnormalScreeningExam    DSRBasicCodedEntry("111419", "DCM", "Additional evaluation requested from abnormal screening exam")
+#define CODE_DCM_AdditionalEvaluationRequestedFromAbnormalScreeningStudy   DSRBasicCodedEntry("111419", "DCM", "Additional evaluation requested from abnormal screening study")
 #define CODE_DCM_HistoryOfBenignBreastBiopsy                               DSRBasicCodedEntry("111420", "DCM", "History of benign breast biopsy")
 #define CODE_DCM_PersonalHistoryOfBreastCancerWithBreastConservationTherapy DSRBasicCodedEntry("111421", "DCM", "Personal history of breast cancer with breast conservation therapy")
 #define CODE_DCM_PhysicalExaminationResults                                DSRBasicCodedEntry("111423", "DCM", "Physical Examination Results")
-#define CODE_DCM_ComparisonToPreviousFindings                              DSRBasicCodedEntry("111424", "DCM", "Comparison to previous findings")
+#define CODE_DCM_ComparisonToPreviousStudies                               DSRBasicCodedEntry("111424", "DCM", "Comparison to previous studies")
 #define CODE_DCM_IntraluminalFillingDefect                                 DSRBasicCodedEntry("111425", "DCM", "Intraluminal filling defect")
 #define CODE_DCM_MultipleFillingDefect                                     DSRBasicCodedEntry("111426", "DCM", "Multiple filling defect")
 #define CODE_DCM_AbruptDuctTermination                                     DSRBasicCodedEntry("111427", "DCM", "Abrupt duct termination")
 #define CODE_DCM_OrthogonalLocationArcInnerMargin                          DSRBasicCodedEntry("113670", "DCM", "Orthogonal location arc inner margin")
 #define CODE_DCM_OrthogonalLocationArcOuterMargin                          DSRBasicCodedEntry("113671", "DCM", "Orthogonal location arc outer margin")
 #define CODE_DCM_QualityControlIntent                                      DSRBasicCodedEntry("113680", "DCM", "Quality Control Intent")
-#define CODE_DCM_Phantom                                                   DSRBasicCodedEntry("113681", "DCM", "Phantom")
+#define CODE_DCM_RETIRED_Phantom                                           DSRBasicCodedEntry("113681", "DCM", "Phantom")
 #define CODE_DCM_ACRAccreditationPhantom_CT                                DSRBasicCodedEntry("113682", "DCM", "ACR Accreditation Phantom - CT")
 #define CODE_DCM_ACRAccreditationPhantom_MR                                DSRBasicCodedEntry("113683", "DCM", "ACR Accreditation Phantom - MR")
 #define CODE_DCM_ACRAccreditationPhantom_Mammography                       DSRBasicCodedEntry("113684", "DCM", "ACR Accreditation Phantom - Mammography")
 #define CODE_DCM_FilteredBackProjection                                    DSRBasicCodedEntry("113962", "DCM", "Filtered Back Projection")
 #define CODE_DCM_IterativeReconstruction                                   DSRBasicCodedEntry("113963", "DCM", "Iterative Reconstruction")
 #define CODE_DCM_AtSurfaceOfPatient                                        DSRBasicCodedEntry("113964", "DCM", "At Surface of Patient")
+#define CODE_DCM_100cmFromXRaySource                                       DSRBasicCodedEntry("113965", "DCM", "100cm from X-Ray Source")
 #define CODE_DCM_ProcedureStepToThisPoint                                  DSRBasicCodedEntry("113970", "DCM", "Procedure Step To This Point")
 #define CODE_DCM_WaterEquivalentDiameter                                   DSRBasicCodedEntry("113980", "DCM", "Water Equivalent Diameter")
 #define CODE_DCM_WaterEquivalentDiameterRepresentativeValue                DSRBasicCodedEntry("113981", "DCM", "Water Equivalent Diameter Representative Value")
 #define CODE_DCM_LesionMorphology                                          DSRBasicCodedEntry("122133", "DCM", "Lesion Morphology")
 #define CODE_DCM_VesselMorphology                                          DSRBasicCodedEntry("122134", "DCM", "Vessel Morphology")
 #define CODE_DCM_CirculatorySupport                                        DSRBasicCodedEntry("122138", "DCM", "Circulatory Support")
-#define CODE_DCM_ReasonForExam                                             DSRBasicCodedEntry("122139", "DCM", "Reason for Exam")
-#define CODE_DCM_ComparisonWithPriorExamDone                               DSRBasicCodedEntry("122140", "DCM", "Comparison with Prior Exam Done")
+#define CODE_DCM_ReasonForStudy                                            DSRBasicCodedEntry("122139", "DCM", "Reason for Study")
+#define CODE_DCM_ComparisonWithPriorStudyDone                              DSRBasicCodedEntry("122140", "DCM", "Comparison with Prior Study Done")
 #define CODE_DCM_ElectrodePlacement                                        DSRBasicCodedEntry("122141", "DCM", "Electrode Placement")
 #define CODE_DCM_AcquisitionDeviceType                                     DSRBasicCodedEntry("122142", "DCM", "Acquisition Device Type")
 #define CODE_DCM_AcquisitionDeviceID                                       DSRBasicCodedEntry("122143", "DCM", "Acquisition Device ID")
 #define CODE_DCM_EndovaginalTransducer                                     DSRBasicCodedEntry("125263", "DCM", "Endovaginal Transducer")
 #define CODE_DCM_EndorectalTransducer                                      DSRBasicCodedEntry("125264", "DCM", "Endorectal Transducer")
 #define CODE_DCM_IntravascularTransducer                                   DSRBasicCodedEntry("125265", "DCM", "Intravascular Transducer")
+#define CODE_DCM_EndocavitaryTransducer                                    DSRBasicCodedEntry("125266", "DCM", "Endocavitary Transducer")
 #define CODE_DCM_LeftVentricleMassByAreaLength                             DSRBasicCodedEntry("125270", "DCM", "Left Ventricle Mass by Area Length")
 #define CODE_DCM_LeftVentricleMassByMMode_adjustedByHeight                 DSRBasicCodedEntry("125271", "DCM", "Left Ventricle Mass by M-mode - adjusted by Height")
 #define CODE_DCM_LeftVentricleMassByTruncatedEllipse_adjustedByHeight      DSRBasicCodedEntry("125272", "DCM", "Left Ventricle Mass by Truncated Ellipse - adjusted by Height")
 #define CODE_DCM_OSLD                                                      DSRBasicCodedEntry("128706", "DCM", "OSLD")
 #define CODE_DCM_IonChamber                                                DSRBasicCodedEntry("128707", "DCM", "Ion Chamber")
 #define CODE_DCM_DiamondDetector                                           DSRBasicCodedEntry("128708", "DCM", "Diamond Detector")
+#define CODE_DCM_RPLGD                                                     DSRBasicCodedEntry("128709", "DCM", "RPLGD")
 #define CODE_DCM_ForTeachingFileExport                                     DSRBasicCodedEntry("128710", "DCM", "For Teaching File Export")
 #define CODE_DCM_ForClinicalTrialExport                                    DSRBasicCodedEntry("128711", "DCM", "For Clinical Trial Export")
 #define CODE_DCM_AdditionalTeachingFileInformation                         DSRBasicCodedEntry("128712", "DCM", "Additional Teaching File Information")
 #define CODE_DCM_HzNormalized                                              DSRBasicCodedEntry("130774", "DCM", "Hz normalized")
 #define CODE_DCM_HzAngular                                                 DSRBasicCodedEntry("130775", "DCM", "Hz angular")
 #define CODE_DCM_MagnitudeNormalized                                       DSRBasicCodedEntry("130776", "DCM", "Magnitude normalized")
+#define CODE_DCM_SpecificObservationSubjectClass                           DSRBasicCodedEntry("130780", "DCM", "Specific observation subject class")
+#define CODE_DCM_ImageFrame                                                DSRBasicCodedEntry("130781", "DCM", "Image frame")
+#define CODE_DCM_RTPatientPositionAcquisition_IntegratedDoseMV             DSRBasicCodedEntry("130782", "DCM", "RT Patient Position Acquisition, Integrated Dose MV")
+#define CODE_DCM_RTPatientPositionAcquisition_FilmCassetteMV               DSRBasicCodedEntry("130783", "DCM", "RT Patient Position Acquisition, Film Cassette MV")
+#define CODE_DCM_RTPatientPositionAcquisition_FilmCassetteKV               DSRBasicCodedEntry("130784", "DCM", "RT Patient Position Acquisition, Film Cassette kV")
+#define CODE_DCM_RTPatientPositionAcquisition_ConeBeamCTKV                 DSRBasicCodedEntry("130785", "DCM", "RT Patient Position Acquisition, Cone-Beam CT kV")
+#define CODE_DCM_RTPatientPositionAcquisition_ConventionalCTKV             DSRBasicCodedEntry("130786", "DCM", "RT Patient Position Acquisition, Conventional CT kV")
+#define CODE_DCM_RTPatientPositionAcquisition_ConeBeamCTMV                 DSRBasicCodedEntry("130787", "DCM", "RT Patient Position Acquisition, Cone-Beam CT MV")
+#define CODE_DCM_RTPatientPositionAcquisition_ConventionalCTMV             DSRBasicCodedEntry("130788", "DCM", "RT Patient Position Acquisition, Conventional CT MV")
+#define CODE_DCM_NominalImagingSourceLocation                              DSRBasicCodedEntry("130789", "DCM", "Nominal Imaging Source Location")
+#define CODE_DCM_RTPatientPositioningReferenceImage                        DSRBasicCodedEntry("130790", "DCM", "RT Patient Positioning Reference Image")
+#define CODE_DCM_AcquisitionInitiationType                                 DSRBasicCodedEntry("130791", "DCM", "Acquisition Initiation Type")
+#define CODE_DCM_AcquisitionInitiationNotDefined                           DSRBasicCodedEntry("130792", "DCM", "Acquisition Initiation not defined")
+#define CODE_DCM_AcquisitionInitiationBeforeStartOfRadiation               DSRBasicCodedEntry("130793", "DCM", "Acquisition Initiation before start of Radiation")
+#define CODE_DCM_AcquisitionInitiationAfterEndOfRadiation                  DSRBasicCodedEntry("130794", "DCM", "Acquisition Initiation after end of Radiation")
+#define CODE_DCM_AcquisitionInitiationByTriggeringParameter                DSRBasicCodedEntry("130795", "DCM", "Acquisition Initiation by triggering parameter")
+#define CODE_DCM_IncrementalAcquisitionTriggering                          DSRBasicCodedEntry("130796", "DCM", "Incremental Acquisition Triggering")
+#define CODE_DCM_Meterset                                                  DSRBasicCodedEntry("130797", "DCM", "Meterset")
+#define CODE_DCM_SourceContinuousRollAngle                                 DSRBasicCodedEntry("130798", "DCM", "Source Continuous Roll Angle")
+#define CODE_DCM_TimeAfterStartOfRadiation                                 DSRBasicCodedEntry("130799", "DCM", "Time after start of Radiation")
+#define CODE_DCM_PercentageOfExpectedBeamonTimeOfRadiation                 DSRBasicCodedEntry("130800", "DCM", "Percentage of expected beam-on time of Radiation")
+#define CODE_DCM_IEC61217ImagingSourceToAxisDistance                       DSRBasicCodedEntry("130801", "DCM", "IEC61217 Imaging Source to Axis Distance")
+#define CODE_DCM_IEC61217XRayImageReceptorRadialDisplacementFromIsocenter  DSRBasicCodedEntry("130802", "DCM", "IEC61217 X-Ray Image Receptor Radial Displacement from Isocenter")
+#define CODE_DCM_IEC61217XRayImageReceptorLongitudinalDisplacement         DSRBasicCodedEntry("130803", "DCM", "IEC61217 X-Ray Image Receptor Longitudinal Displacement")
+#define CODE_DCM_IEC61217XRayImageReceptorLateralDisplacement              DSRBasicCodedEntry("130804", "DCM", "IEC61217 X-Ray Image Receptor Lateral Displacement")
+#define CODE_DCM_IEC61217XRayImageReceptorRotation                         DSRBasicCodedEntry("130805", "DCM", "IEC61217 X-Ray Image Receptor Rotation")
+#define CODE_DCM_ConfiguredLowestImagingEnergy                             DSRBasicCodedEntry("130806", "DCM", "Configured Lowest Imaging Energy")
+#define CODE_DCM_ConfiguredDefaultImagingEnergy                            DSRBasicCodedEntry("130807", "DCM", "Configured Default Imaging Energy")
+#define CODE_DCM_PlanarMatrixUltrasoundTransducerGeometry                  DSRBasicCodedEntry("130808", "DCM", "Planar matrix ultrasound transducer geometry")
+#define CODE_DCM_HemisphericalUltrasoundTransducerGeometry                 DSRBasicCodedEntry("130809", "DCM", "Hemispherical ultrasound transducer geometry")
+#define CODE_DCM_SingleSideIllumination                                    DSRBasicCodedEntry("130810", "DCM", "Single-side illumination")
+#define CODE_DCM_DualSideIllumination                                      DSRBasicCodedEntry("130811", "DCM", "Dual-side illumination")
+#define CODE_DCM_MultiSideIllumination                                     DSRBasicCodedEntry("130812", "DCM", "Multi-side illumination")
+#define CODE_DCM_ThroughTransducerIllumination                             DSRBasicCodedEntry("130813", "DCM", "Through-transducer illumination")
+#define CODE_DCM_InterstitialIllumination                                  DSRBasicCodedEntry("130814", "DCM", "Interstitial illumination")
+#define CODE_DCM_PiezocompositeTransducer                                  DSRBasicCodedEntry("130815", "DCM", "Piezocomposite Transducer")
+#define CODE_DCM_MEMSBasedTransducer                                       DSRBasicCodedEntry("130816", "DCM", "MEMS-based Transducer")
+#define CODE_DCM_InterferometricTransducer                                 DSRBasicCodedEntry("130817", "DCM", "Interferometric Transducer")
+#define CODE_DCM_UniformSpeedOfSoundCorrection                             DSRBasicCodedEntry("130818", "DCM", "Uniform Speed of Sound Correction")
+#define CODE_DCM_DualSpeedOfSoundCorrection                                DSRBasicCodedEntry("130819", "DCM", "Dual Speed of Sound Correction")
+#define CODE_DCM_SpeedOfSoundMapCorrection                                 DSRBasicCodedEntry("130820", "DCM", "Speed of Sound Map Correction")
+#define CODE_DCM_SphericalBackProjection                                   DSRBasicCodedEntry("130821", "DCM", "Spherical Back Projection")
+#define CODE_DCM_NumericalAcousticModel                                    DSRBasicCodedEntry("130822", "DCM", "Numerical Acoustic Model")
+#define CODE_DCM_BloodDeoxygenationLevel                                   DSRBasicCodedEntry("130823", "DCM", "Blood Deoxygenation Level")
 
 #endif
index 75a23a90abd675c104c2442b23b120a957737bef..2817c5d3b36e36cab6cf7361a43fa47efbe9f937 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file with NCI Thesaurus Code Definitions (Coding Scheme "NCIt")
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:36:21 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023c
+ *  File created on 2023-07-14 12:40:31 by J. Riesmeier
  *
  */
 
@@ -34,7 +34,7 @@
  *  code definitions  *
  *--------------------*/
 
-// total number of codes: 49
+// total number of codes: 51
 // - retired: 0
 // - no name: 0
 // - not unique: 0
@@ -73,6 +73,7 @@
 #define CODE_NCIt_NoEvidenceOfDisease                                      DSRBasicCodedEntry("C40413", "NCIt", "No Evidence of Disease")
 #define CODE_NCIt_NativeHawaiianOrOtherPacificIslander                     DSRBasicCodedEntry("C41219", "NCIt", "Native Hawaiian or other Pacific Islander")
 #define CODE_NCIt_AdverseEvent                                             DSRBasicCodedEntry("C41331", "NCIt", "Adverse Event")
+#define CODE_NCIt_Image                                                    DSRBasicCodedEntry("C48179", "NCIt", "Image")
 #define CODE_NCIt_TemperatureSensorDeviceComponent                         DSRBasicCodedEntry("C50304", "NCIt", "Temperature sensor device component")
 #define CODE_NCIt_Experience                                               DSRBasicCodedEntry("C54627", "NCIt", "Experience")
 #define CODE_NCIt_Reviewer                                                 DSRBasicCodedEntry("C54634", "NCIt", "Reviewer")
@@ -84,6 +85,7 @@
 #define CODE_NCIt_MedicalProductExpirationDate                             DSRBasicCodedEntry("C70854", "NCIt", "Medical Product Expiration Date")
 #define CODE_NCIt_CardiotonicAgent                                         DSRBasicCodedEntry("C78322", "NCIt", "Cardiotonic agent")
 #define CODE_NCIt_NonEnhancingLesion                                       DSRBasicCodedEntry("C81175", "NCIt", "Non-Enhancing Lesion")
+#define CODE_NCIt_ImagingRegionOfInterest                                  DSRBasicCodedEntry("C85402", "NCIt", "Imaging Region of Interest")
 #define CODE_NCIt_Erect                                                    DSRBasicCodedEntry("C86043", "NCIt", "erect")
 #define CODE_NCIt_BeddingChange                                            DSRBasicCodedEntry("C90365", "NCIt", "Bedding change")
 #define CODE_NCIt_BeddingMaterial                                          DSRBasicCodedEntry("C90366", "NCIt", "Bedding material")
index 09d414e915adb2ebda47d6ad3963f3cd12f5f1e4..6e66ca570324c143834c3e05d805ea35338a2dab 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file with UMLS Code Definitions (Coding Scheme "UMLS")
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:36:21 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023c
+ *  File created on 2023-07-14 12:40:30 by J. Riesmeier
  *
  */
 
@@ -34,7 +34,7 @@
  *  code definitions  *
  *--------------------*/
 
-// total number of codes: 51
+// total number of codes: 49
 // - retired: 0
 // - no name: 0
 // - not unique: 0
 #define CODE_UMLS_MedicalPhysicist                                         DSRBasicCodedEntry("C1708969", "UMLS", "Medical Physicist")
 #define CODE_UMLS_Referring                                                DSRBasicCodedEntry("C1709880", "UMLS", "Referring")
 #define CODE_UMLS_Variance                                                 DSRBasicCodedEntry("C1711260", "UMLS", "Variance")
-#define CODE_UMLS_Tyrosine3Octreotate_Ga68                                 DSRBasicCodedEntry("C1742831", "UMLS", "tyrosine-3-octreotate Ga^68^")
-#define CODE_UMLS_Fluoroestradiol_FES_F18                                  DSRBasicCodedEntry("C1831937", "UMLS", "Fluoroestradiol (FES) F^18^")
 #define CODE_UMLS_Sonographer                                              DSRBasicCodedEntry("C1954848", "UMLS", "Sonographer")
 #define CODE_UMLS_Neuroradiology                                           DSRBasicCodedEntry("C2183225", "UMLS", "Neuroradiology")
 #define CODE_UMLS_InverseRatioVentilation                                  DSRBasicCodedEntry("C2223982", "UMLS", "Inverse ratio ventilation")
 #define CODE_UMLS_RootMeanSquare                                           DSRBasicCodedEntry("C2347976", "UMLS", "Root Mean Square")
 #define CODE_UMLS_TimePoint                                                DSRBasicCodedEntry("C2348792", "UMLS", "Time Point")
 #define CODE_UMLS_Edotreotide_Ga68                                         DSRBasicCodedEntry("C2713594", "UMLS", "Edotreotide Ga^68^")
-#define CODE_UMLS_FluoropropylDihydrotetrabenazine_DTBZ_F18                DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^")
+#define CODE_UMLS_FluoropropylDihydrotetrabenazine_F18                     DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine F^18^")
 #define CODE_UMLS_ISO1_F18                                                 DSRBasicCodedEntry("C2981788", "UMLS", "ISO-1 F^18^")
 #define CODE_UMLS_RadiationPhysicist                                       DSRBasicCodedEntry("C2985483", "UMLS", "Radiation Physicist")
 #define CODE_UMLS_Pretreatment                                             DSRBasicCodedEntry("C3539075", "UMLS", "Pretreatment")
index 8ad1cf7bc26619752c58cb522d49fb34d7f7e331..1c86317d4cc98be8dc1d8383e8de9d61f07b19ce 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2021, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -441,7 +441,7 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
     /** check the specified SOP class UID for validity.
      *  This method further specializes the checks performed in the base class
      *  DSRCompositeReferenceValue.  All image and segmentation SOP classes that
-     *  are defined in DICOM PS 3.6-2020c are allowed.
+     *  are defined in DICOM PS 3.6-2023c are allowed.
      ** @param  sopClassUID     SOP class UID to be checked
      *  @param  reportWarnings  if enabled, report warning messages to the logger
      ** @return status, EC_Normal if value is valid, an error code otherwise
index f5eab672716aba5748675e330f7616265de96186..f13a02f7b2daf928394e6323e0af71cbfe2aa13e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2015, OFFIS e.V.
+ *  Copyright (C) 2010-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -65,7 +65,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicData3DItem
 
     /** comparison operator
      ** @param  item  item with which the (x,y,z) triplet should be compared
-     ** @return true if not equal, false if equal
+     ** @return OFTrue if not equal, OFFalse if equal
      */
     inline OFBool operator!=(const DSRGraphicData3DItem &item) const
     {
index 6d28ea6676b57de3cd70d5a3a391c7b2b53f287a..66c924a5da5b917f96bf780f90b096fe9d66423b 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -62,7 +62,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicDataItem
 
     /** comparison operator
      ** @param  item  item with which the (column,row) pair should be compared
-     ** @return true if not equal, false if equal
+     ** @return OFTrue if not equal, OFFalse if equal
      */
     inline OFBool operator!=(const DSRGraphicDataItem &item) const
     {
@@ -71,7 +71,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicDataItem
 
     /** comparison operator
      ** @param  item  item with which the (column,row) pair should be compared
-     ** @return true if smaller. Row takes precedence over column.
+     ** @return OFTrue if smaller. Row takes precedence over column.
      */
     inline OFBool operator<(const DSRGraphicDataItem &item) const
     {
@@ -80,7 +80,7 @@ class DCMTK_DCMSR_EXPORT DSRGraphicDataItem
 
     /** comparison operator
      ** @param  item  item with which the (column,row) pair should be compared
-     ** @return true if greater. Row takes precedence over column.
+     ** @return OFTrue if greater. Row takes precedence over column.
      */
     inline OFBool operator>(const DSRGraphicDataItem &item) const
     {
index 9c572465a810d56473f863278791cbe0e6f1f857..2394816d6d21fe863836230e1b47ac749252f917 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2022, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -72,7 +72,7 @@ extern DCMTK_DCMSR_EXPORT OFLogger DCM_dcmsrLogger;
 // protocol, hostname and CGI script name used for HTML hyperlinks to composite objects
 #define HTML_HYPERLINK_PREFIX_FOR_CGI "http://localhost/dicom.cgi"
 // URL of the DICOM toolkit DCMTK
-#define DCMTK_INTERNET_URL "http://dicom.offis.de/dcmtk"
+#define DCMTK_INTERNET_URL "https://www.dcmtk.org/"
 
 // XML namespace URI for dcmsr module
 #define DCMSR_XML_NAMESPACE_URI "http://dicom.offis.de/dcmsr"
@@ -653,8 +653,10 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         PT_SegmentedVolumeRendering,
         /// Multiple Volume Rendering Volumetric Presentation State (MVR-VPS)
         PT_MultipleVolumeRendering,
+        /// Variable Modality LUT Softcopy Presentation State (VML-SPS)
+        PT_VariableModalityLUT,
         /// internal type used to mark the last entry
-        PT_last = PT_MultipleVolumeRendering
+        PT_last = PT_VariableModalityLUT
     };
 
     /** SR graphic types.  Used for content item SCOORD.
index 81a0bdf4064cf3a8823b7ca8dc5cdcecedce818f..1dafa126fab2e5681cfb7530c49aa304179d2969 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2015, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -62,7 +62,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformChannelItem
 
     /** comparison operator
      ** @param  item  item with which the (m,c) pair should be compared
-     ** @return true if not equal, false if equal
+     ** @return OFTrue if not equal, OFFalse if equal
      */
     inline OFBool operator!=(const DSRWaveformChannelItem &item) const
     {
@@ -71,7 +71,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformChannelItem
 
     /** comparison operator
      ** @param  item  item with which the (m,c) pair should be compared
-     ** @return true if smaller. ChannelNumber takes precedence over MultiplexGroupNumber.
+     ** @return OFTrue if smaller. ChannelNumber takes precedence over MultiplexGroupNumber.
      */
     inline OFBool operator<(const DSRWaveformChannelItem &item) const
     {
@@ -80,7 +80,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformChannelItem
 
     /** comparison operator
      ** @param  item  item with which the (m,c) pair should be compared
-     ** @return true if greater. ChannelNumber takes precedence over MultiplexGroupNumber.
+     ** @return OFTrue if greater. ChannelNumber takes precedence over MultiplexGroupNumber.
      */
     inline OFBool operator>(const DSRWaveformChannelItem &item) const
     {
index f5b21aa07b7ccab20095c4257381c7846b51a8c1..f28cab591a636a6ae6d28520bb689daf7a50b5d8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2021, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -216,7 +216,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformReferenceValue
     /** check the specified SOP class UID for validity.
      *  This method further specializes the checks performed in the base class
      *  DSRCompositeReferenceValue.  All waveform SOP classes that are defined
-     *  in DICOM PS 3.6-2020c are allowed.
+     *  in DICOM PS 3.6-2023c are allowed.
      ** @param  sopClassUID     SOP class UID to be checked
      *  @param  reportWarnings  if enabled, report warning messages to the logger
      ** @return status, EC_Normal if value is valid, an error code otherwise
index 3296bf638d2ab7b1333fc472aa733cfc92637d75..ccd5a8913cb13e05d07dae68aa95c75ebb45f0f5 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID100_QuantitativeDiagnosticImagingProcedure
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:58 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:44 by J. Riesmeier
  *
  */
 
index 0663d1ea176d30101ce593ea929ea849bd7cf629..7e2e8330acf9014729d6d2c84ffddec0672f11d7 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID10013_CTAcquisitionType
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:11 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:57:00 by J. Riesmeier
  *
  */
 
index 5a9bd3310824a1d252aca58512069e1498e9af8c..4ec3ce8b3611efa285fed4f28aadaccd50f886af 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID10033_CTReconstructionAlgorithm
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:12 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:57:01 by J. Riesmeier
  *
  */
 
index e1ca5223c6c06a7eaeba7631c5f9c5659a159c1b..db9990ee1cba2a8aab83691a8840fccd3633cb0b 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID11_AdministrationRoute
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:56 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:42 by J. Riesmeier
  *
  */
 
index 2e35940c0650a21293c395f03112c506dc218d07..bf85a594d2bf0808bdb73dcd777e4f294e58daba 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID218_QuantitativeImageFeature
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:59 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:46 by J. Riesmeier
  *
  */
 
index 1b787b09bf0bc932c1eb9a4e0a1de6531e952bef..ecb61c9520d2cadf9ef7bc594293683329c5513d 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID244_Laterality
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:00 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:47 by J. Riesmeier
  *
  */
 
index e63ceba9bb78e7460970ce97b08b17c018916780..4641aaa7a9747283af77d0b73231b42781125d08 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID247_LateralityLeftRightOnly
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:01 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:48 by J. Riesmeier
  *
  */
 
index f1eed0881820c5740a318ec7a82a10a9098cabbb..b85ac36cc8f223dcb7d3b597ddf1caffe64e3069 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID29_AcquisitionModality
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:57 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:43 by J. Riesmeier
  *
  */
 
index 12771ac5a9b3a49a4f2e99ca3d490d5dba69f393..a7eca72c240d98bc9acfc2641d7f82fd5aace2e2 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID4020_PETRadionuclide
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:01 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:48 by J. Riesmeier
  *
  */
 
index c06c55daed7a84d242e10d69ce46a0f7d9442c7d..f6ee77a5db4ba0dbe1380f121fd65ddec9009024 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID4021_PETRadiopharmaceutical
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:02 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:49 by J. Riesmeier
  *
  */
 
@@ -18,7 +18,7 @@
 
 // general information on CID 4021 (PET Radiopharmaceutical)
 #define CONTEXT_GROUP_NUMBER  "4021"
-#define CONTEXT_GROUP_VERSION "20201116"
+#define CONTEXT_GROUP_VERSION "20221201"
 #define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.305"
 #define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
 
@@ -196,7 +196,7 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod
         Codes->insert(OFMake_pair(FLB457_C11, DSRBasicCodedEntry("126706", "DCM", "FLB 457 C^11^")));
         Codes->insert(OFMake_pair(Florbetaben_F18, DSRBasicCodedEntry("712736002", "SCT", "Florbetaben F^18^")));
         Codes->insert(OFMake_pair(Florbetapir_F18, DSRBasicCodedEntry("456995000", "SCT", "Florbetapir F^18^")));
-        Codes->insert(OFMake_pair(Flortaucipir_F18, DSRBasicCodedEntry("C000591008", "MSH", "Flortaucipir F^18^")));
+        Codes->insert(OFMake_pair(Flortaucipir_F18, DSRBasicCodedEntry("879808000", "SCT", "Flortaucipir F^18^")));
         Codes->insert(OFMake_pair(Flubatine_F18, DSRBasicCodedEntry("126503", "DCM", "Flubatine F^18^")));
         Codes->insert(OFMake_pair(Fluciclatide_F18, DSRBasicCodedEntry("456999006", "SCT", "Fluciclatide F^18^")));
         Codes->insert(OFMake_pair(Fluciclovine_F18, DSRBasicCodedEntry("457000009", "SCT", "Fluciclovine F^18^")));
@@ -206,12 +206,12 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod
         Codes->insert(OFMake_pair(Fluorobenzothiazole_F18, DSRBasicCodedEntry("423546004", "SCT", "Fluorobenzothiazole F^18^")));
         Codes->insert(OFMake_pair(Fluorocholine_F18, DSRBasicCodedEntry("456992002", "SCT", "Fluorocholine F^18^")));
         Codes->insert(OFMake_pair(Fluorodeoxyglucose_F18, DSRBasicCodedEntry("35321007", "SCT", "Fluorodeoxyglucose F^18^")));
-        Codes->insert(OFMake_pair(FluoroestradiolFES_F18, DSRBasicCodedEntry("C1831937", "UMLS", "Fluoroestradiol (FES) F^18^")));
+        Codes->insert(OFMake_pair(Fluoroestradiol_F18, DSRBasicCodedEntry("926372005", "SCT", "Fluoroestradiol F^18^")));
         Codes->insert(OFMake_pair(Fluoroetanidazole_F18, DSRBasicCodedEntry("C1541539", "UMLS", "Fluoroetanidazole F^18^")));
         Codes->insert(OFMake_pair(FluoroLDopa_F18, DSRBasicCodedEntry("5811000122108", "SCT", "Fluoro-L-dopa F^18^")));
         Codes->insert(OFMake_pair(Fluoromethane_F18, DSRBasicCodedEntry("422763008", "SCT", "Fluoromethane F^18^")));
         Codes->insert(OFMake_pair(Fluoromisonidazole_F18, DSRBasicCodedEntry("422598008", "SCT", "Fluoromisonidazole F^18^")));
-        Codes->insert(OFMake_pair(FluoropropylDihydrotetrabenazineDTBZ_F18, DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^")));
+        Codes->insert(OFMake_pair(FluoropropylDihydrotetrabenazine_F18, DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine F^18^")));
         Codes->insert(OFMake_pair(Fluorotriopride_F18, DSRBasicCodedEntry("126707", "DCM", "Fluorotriopride F^18^")));
         Codes->insert(OFMake_pair(Fluorouracil_F18, DSRBasicCodedEntry("425236000", "SCT", "Fluorouracil F^18^")));
         Codes->insert(OFMake_pair(Flurpiridaz_F18, DSRBasicCodedEntry("126718", "DCM", "Flurpiridaz F^18^")));
@@ -232,8 +232,8 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod
         Codes->insert(OFMake_pair(Methionine_C11, DSRBasicCodedEntry("129510001", "SCT", "Methionine C^11^")));
         Codes->insert(OFMake_pair(MK6240_F18, DSRBasicCodedEntry("C4506764", "UMLS", "MK-6240 F^18^")));
         Codes->insert(OFMake_pair(Mogamulizumab_89Zr, DSRBasicCodedEntry("126738", "DCM", "Mogamulizumab ^89^Zr")));
-        Codes->insert(OFMake_pair(MonoclonalAntibodymAb_64Cu, DSRBasicCodedEntry("126510", "DCM", "Monoclonal Antibody (mAb) ^64^Cu")));
-        Codes->insert(OFMake_pair(MonoclonalAntibodymAb_89Zr, DSRBasicCodedEntry("126511", "DCM", "Monoclonal Antibody (mAb) ^89^Zr")));
+        Codes->insert(OFMake_pair(MonoclonalAntibody_64Cu, DSRBasicCodedEntry("126510", "DCM", "Monoclonal Antibody ^64^Cu")));
+        Codes->insert(OFMake_pair(MonoclonalAntibody_89Zr, DSRBasicCodedEntry("126511", "DCM", "Monoclonal Antibody ^89^Zr")));
         Codes->insert(OFMake_pair(MonoclonalAntibody_I124, DSRBasicCodedEntry("423249007", "SCT", "Monoclonal antibody I^124^")));
         Codes->insert(OFMake_pair(NanocolloidalAlbumin_89Zr, DSRBasicCodedEntry("126753", "DCM", "Nanocolloidal albumin ^89^Zr")));
         Codes->insert(OFMake_pair(Nifene_F18, DSRBasicCodedEntry("126714", "DCM", "Nifene F^18^")));
@@ -272,10 +272,10 @@ CID4021_PETRadiopharmaceutical::CodeList &CID4021_PETRadiopharmaceutical::getCod
         Codes->insert(OFMake_pair(T807_F18, DSRBasicCodedEntry("126502", "DCM", "T807 F^18^")));
         Codes->insert(OFMake_pair(THK5317_F18, DSRBasicCodedEntry("C4550127", "UMLS", "THK5317 F^18^")));
         Codes->insert(OFMake_pair(THK5351_F18, DSRBasicCodedEntry("C4279748", "UMLS", "THK5351 F^18^")));
-        Codes->insert(OFMake_pair(ThymidineFLT_F18, DSRBasicCodedEntry("129502002", "SCT", "Thymidine (FLT) F^18^")));
+        Codes->insert(OFMake_pair(Thymidine_F18, DSRBasicCodedEntry("129502002", "SCT", "Thymidine F^18^")));
         Codes->insert(OFMake_pair(Trastuzumab_89Zr, DSRBasicCodedEntry("126512", "DCM", "Trastuzumab ^89^Zr")));
         Codes->insert(OFMake_pair(TRC105_89Zr, DSRBasicCodedEntry("126749", "DCM", "TRC105 ^89^Zr")));
-        Codes->insert(OFMake_pair(Tyrosine3Octreotate_Ga68, DSRBasicCodedEntry("C1742831", "UMLS", "tyrosine-3-octreotate Ga^68^")));
+        Codes->insert(OFMake_pair(Dotatate_Ga68, DSRBasicCodedEntry("724025002", "SCT", "Dotatate Ga^68^")));
         Codes->insert(OFMake_pair(Ublituximab_89Zr, DSRBasicCodedEntry("126739", "DCM", "Ublituximab ^89^Zr")));
         Codes->insert(OFMake_pair(UCBJ_C11, DSRBasicCodedEntry("C4506788", "UMLS", "UCB-J C^11^")));
         Codes->insert(OFMake_pair(XmAb5574_89Zr, DSRBasicCodedEntry("126734", "DCM", "XmAb5574 ^89^Zr")));
index 9b3d0de15f6b4d0d60b0a85b21e742cbcfb96832..49a3d5148f0f4346ddd1415ec88538a39ed58a04 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID4031_CommonAnatomicRegion
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:03 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:50 by J. Riesmeier
  *
  */
 
@@ -18,7 +18,7 @@
 
 // general information on CID 4031 (Common Anatomic Region)
 #define CONTEXT_GROUP_NUMBER  "4031"
-#define CONTEXT_GROUP_VERSION "20220922"
+#define CONTEXT_GROUP_VERSION "20221224"
 #define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.308"
 #define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
 
@@ -228,7 +228,7 @@ CID4031_CommonAnatomicRegion::CodeList &CID4031_CommonAnatomicRegion::getCodes()
         Codes->insert(OFMake_pair(Patella, DSRBasicCodedEntry("64234005", "SCT", "Patella")));
         Codes->insert(OFMake_pair(Pelvis, DSRBasicCodedEntry("816092008", "SCT", "Pelvis")));
         Codes->insert(OFMake_pair(PelvisAndLowerExtremities, DSRBasicCodedEntry("1231522001", "SCT", "Pelvis and lower extremities")));
-        Codes->insert(OFMake_pair(Phantom, DSRBasicCodedEntry("113681", "DCM", "Phantom")));
+        Codes->insert(OFMake_pair(Phantom, DSRBasicCodedEntry("706342009", "SCT", "Phantom")));
         Codes->insert(OFMake_pair(Prostate, DSRBasicCodedEntry("41216001", "SCT", "Prostate")));
         Codes->insert(OFMake_pair(Rectum, DSRBasicCodedEntry("34402009", "SCT", "Rectum")));
         Codes->insert(OFMake_pair(Rib, DSRBasicCodedEntry("113197003", "SCT", "Rib")));
index 2a080128bb946283be63202f2f55eb0d99c19fa3..7183af20f31e36bf24711ff7f5364d71e868658c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID4031e_CommonAnatomicRegion
@@ -30,7 +30,7 @@ struct DefinedTermTypeMapStruct
  *  constant definitions  *
  *------------------------*/
 
-// mapping extracted from DICOM PS 3.16-2020c Table L-1
+// mapping extracted manually from DICOM PS 3.16-2023b Table L-1
 
 static const DefinedTermTypeMapStruct DefinedTermTypeMap[] =
 {
@@ -39,6 +39,7 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] =
     {"ACJOINT",          CID4031_CommonAnatomicRegion::AcromioclavicularJoint},
     {"ANKLE",            CID4031_CommonAnatomicRegion::AnkleJoint},
     {"BILEDUCT",         CID4031_CommonAnatomicRegion::BileDuct},
+    {"BILIARYTRACT​",     CID4031_CommonAnatomicRegion::BiliaryTract},
     {"BLADDER",          CID4031_CommonAnatomicRegion::Bladder},
     {"BREAST",           CID4031_CommonAnatomicRegion::Breast},
     {"BRONCHUS",         CID4031_CommonAnatomicRegion::Bronchus},
@@ -50,8 +51,8 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] =
     {"CHESTABDPELVIS",   CID4031_CommonAnatomicRegion::ChestAbdomenAndPelvis},
     {"CLAVICLE",         CID4031_CommonAnatomicRegion::Clavicle},
     {"COCCYX",           CID4031_CommonAnatomicRegion::Coccyx},
-    {"COMMONBILEDUCT",   CID4031_CommonAnatomicRegion::CommonBileDuct},
     {"COLON",            CID4031_CommonAnatomicRegion::Colon},
+    {"COMMONBILEDUCT",   CID4031_CommonAnatomicRegion::CommonBileDuct},
     {"DUODENUM",         CID4031_CommonAnatomicRegion::Duodenum},
     {"ELBOW",            CID4031_CommonAnatomicRegion::ElbowJoint},
     {"WHOLEBODY",        CID4031_CommonAnatomicRegion::EntireBody},
@@ -78,10 +79,11 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] =
     {"KNEE",             CID4031_CommonAnatomicRegion::Knee},
     {"LARGEINTESTINE",   CID4031_CommonAnatomicRegion::LargeIntestine},
     {"LARYNX",           CID4031_CommonAnatomicRegion::Larynx},
-    {"LEG",              CID4031_CommonAnatomicRegion::LowerLeg},
+    {"LOWERLEG",         CID4031_CommonAnatomicRegion::LowerLeg},
+    {"LOWERLIMB",        CID4031_CommonAnatomicRegion::LowerLimb},
     {"LSPINE",           CID4031_CommonAnatomicRegion::LumbarSpine},
     {"LSSPINE",          CID4031_CommonAnatomicRegion::LumboSacralSpine},
-    {"JAW",              CID4031_CommonAnatomicRegion::Mandible},              // same Defined Term as for (T-D1213,SRT,"Jaw region")
+    {"MANDIBLE",         CID4031_CommonAnatomicRegion::Mandible},
     {"MASTOID",          CID4031_CommonAnatomicRegion::MastoidBone},
     {"MAXILLA",          CID4031_CommonAnatomicRegion::Maxilla},
     {"MEDIASTINUM",      CID4031_CommonAnatomicRegion::Mediastinum},
@@ -93,9 +95,12 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] =
     {"ORBIT",            CID4031_CommonAnatomicRegion::OrbitalStructure},
     {"PANCREAS",         CID4031_CommonAnatomicRegion::Pancreas},
     {"PANCREATICDUCT",   CID4031_CommonAnatomicRegion::PancreaticDuct},
+    {"PANCBILEDUCT​",     CID4031_CommonAnatomicRegion::PancreaticDuctAndBileDuctSystems},
     {"PAROTID",          CID4031_CommonAnatomicRegion::ParotidGland},
     {"PATELLA",          CID4031_CommonAnatomicRegion::Patella},
     {"PELVIS",           CID4031_CommonAnatomicRegion::Pelvis},
+    {"PELVISLOWEXTREMT​", CID4031_CommonAnatomicRegion::PelvisAndLowerExtremities},
+    {"PHANTOM",          CID4031_CommonAnatomicRegion::Phantom},
     {"PROSTATE",         CID4031_CommonAnatomicRegion::Prostate},
     {"RECTUM",           CID4031_CommonAnatomicRegion::Rectum},
     {"RIB",              CID4031_CommonAnatomicRegion::Rib},
@@ -119,7 +124,8 @@ static const DefinedTermTypeMapStruct DefinedTermTypeMap[] =
     {"THUMB",            CID4031_CommonAnatomicRegion::Thumb},
     {"TOE",              CID4031_CommonAnatomicRegion::Toe},
     {"TRACHEA",          CID4031_CommonAnatomicRegion::Trachea},
-    {"ARM",              CID4031_CommonAnatomicRegion::UpperArm},
+    {"UPPERARM",         CID4031_CommonAnatomicRegion::UpperArm},
+    {"UPPERLIMB",        CID4031_CommonAnatomicRegion::UpperLimb},
     {"UPRURINARYTRACT",  CID4031_CommonAnatomicRegion::UpperUrinaryTract},
     {"URETER",           CID4031_CommonAnatomicRegion::Ureter},
     {"URETHRA",          CID4031_CommonAnatomicRegion::Urethra},
index c2ca133a44e45a395fae00e8ee29d13cba063ad9..a94557a926c0cd5fee73104b5dfb8b9c52e05477 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID42_NumericValueQualifier
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:49:57 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:44 by J. Riesmeier
  *
  */
 
index be67b82633f545d5175a624edc08742b287d2175..0ddde5cb1466f135786431b4852ea2deb6f1d960 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID6147_ResponseCriteria
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:03 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:51 by J. Riesmeier
  *
  */
 
index 3527fc3f212f0ba076211cc8fb818fb4f162ab00..107c2ba689b7ddcf33a6eace1c08d605da88ef8a 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7021_MeasurementReportDocumentTitle
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:04 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:52 by J. Riesmeier
  *
  */
 
index 75975410a185ac0c43a9959a08e83525ae9fbfce..5467a1d309ed74d1c2229932041c7fb1ef82d561 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7181_AbstractMultiDimensionalImageModelComponentUnit
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:05 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:53 by J. Riesmeier
  *
  */
 
index f78b5f964d1d791801a3cd479cba6b076416629c..712c53e279fee6f054572d617a5c7f1ac6ca6caa 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7445_DeviceParticipatingRole
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:06 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:54 by J. Riesmeier
  *
  */
 
index 5e96fa68b43e34664f590c570b86f5bcce0d9edd..6963fedc0a41c5a083e567f0a857cb6999e99997 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7452_OrganizationalRole
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:06 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:55 by J. Riesmeier
  *
  */
 
index c6b0ed3cb8c9baf2f9f285effbe5abbae47abea5..840f595fa833f23564d7fd1290cc0458bf2c4ba5 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7453_PerformingRole
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:07 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:56 by J. Riesmeier
  *
  */
 
index 468c01483de2cecc9d310b17e8dc40b25cdb7b07..66c3c24643852178312fa597edcc4f60e4a6f09c 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7464_GeneralRegionOfInterestMeasurementModifier
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:08 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:57 by J. Riesmeier
  *
  */
 
index 936037057e03844af2f929be09f4ae31d1f0d52e..8aefba8fcf741e58522bc2c48c2eca69a51a7fd5 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7469_GenericIntensityAndSizeMeasurement
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:09 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:58 by J. Riesmeier
  *
  */
 
index 66f34c7fdd08072525def3f10bb08c9c55314330..a6d8ac143aad901cbd1fc114404f4dc82ed52b2b 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015-2022, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2023, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class CID7551_GenericPurposeOfReferenceToImagesAndCoordinatesInMeasurement
  *
- *  Generated automatically from DICOM PS 3.16-2022d
- *  File created on 2022-10-24 17:50:10 by J. Riesmeier
+ *  Generated automatically from DICOM PS 3.16-2023a
+ *  File created on 2023-02-02 17:56:59 by J. Riesmeier
  *
  */
 
index 99b7d24bed8808c9a19139abfdfc1ea4ac0820e2..1b173b58469ab4a4c2addd85597a96cef05d6fcd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2021, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -688,7 +688,7 @@ OFBool DSRImageReferenceValue::appliesToSegment(const Uint16 segmentNumber) cons
 
 OFBool DSRImageReferenceValue::isSegmentationObject(const OFString &sopClassUID) const
 {
-    /* check for all segmentation SOP classes (according to DICOM PS 3.6-2020c) */
+    /* check for all segmentation SOP classes (according to DICOM PS 3.6-2023c) */
     return (sopClassUID == UID_SegmentationStorage) || (sopClassUID == UID_SurfaceSegmentationStorage);
 }
 
index c952f1b2f931de03fab175fa3b4a976a05a58a5a..08414ad93e6213bd6d58f425a8a66a464275fde6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2022, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -397,7 +397,8 @@ static const S_PresentationStateTypeNameMap PresentationStateTypeNameMap[] =
     {DSRTypes::PT_AdvancedBlending,         UID_AdvancedBlendingPresentationStateStorage,                   "ABPS"},
     {DSRTypes::PT_VolumeRendering,          UID_VolumeRenderingVolumetricPresentationStateStorage,          "VR-VPS"},
     {DSRTypes::PT_SegmentedVolumeRendering, UID_SegmentedVolumeRenderingVolumetricPresentationStateStorage, "SVR-VPS"},
-    {DSRTypes::PT_MultipleVolumeRendering,  UID_MultipleVolumeRenderingVolumetricPresentationStateStorage,  "MVR-VPS"}
+    {DSRTypes::PT_MultipleVolumeRendering,  UID_MultipleVolumeRenderingVolumetricPresentationStateStorage,  "MVR-VPS"},
+    {DSRTypes::PT_VariableModalityLUT,      UID_VariableModalityLUTSoftcopyPresentationStateStorage,        "VML-SPS"}
 };
 
 
index c96e16815f8b797e1b3cc53facf35a0964253ce9..b89bf2ab664fdb6f8226ddaf17a6709ae04f30cf 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2021, OFFIS e.V.
+ *  Copyright (C) 2000-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -271,7 +271,7 @@ OFCondition DSRWaveformReferenceValue::checkSOPClassUID(const OFString &sopClass
     OFCondition result = DSRCompositeReferenceValue::checkSOPClassUID(sopClassUID);
     if (result.good())
     {
-        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2021c) */
+        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2023c) */
         if ((sopClassUID != UID_TwelveLeadECGWaveformStorage) &&
             (sopClassUID != UID_GeneralECGWaveformStorage) &&
             (sopClassUID != UID_AmbulatoryECGWaveformStorage) &&
@@ -286,7 +286,8 @@ OFCondition DSRWaveformReferenceValue::checkSOPClassUID(const OFString &sopClass
             (sopClassUID != UID_ElectromyogramWaveformStorage) &&
             (sopClassUID != UID_ElectrooculogramWaveformStorage) &&
             (sopClassUID != UID_SleepElectroencephalogramWaveformStorage) &&
-            (sopClassUID != UID_BodyPositionWaveformStorage))
+            (sopClassUID != UID_BodyPositionWaveformStorage) &&
+            (sopClassUID != UID_General32BitECGWaveformStorage))
         {
             REPORT_WARNING("Invalid or unknown waveform SOP class referenced from WAVEFORM content item")
             result = SR_EC_InvalidValue;
index 6533028fcfd0b018438031d8218fd3a09b73f74a..8c464e2f15adf22c7c4ecd42be0796e484890144 100644 (file)
@@ -64,31 +64,54 @@ The DICOM standard defines a number of security profiles for the use of the
 DICOM network protocol over TLS. DCMTK supports the following profiles:
 
 \verbatim
+  +pg   --profile-8996
+          BCP 195 RFC 8996 TLS Profile (default)
+
+  +pm   --profile-8996-mod
+          Modified BCP 195 RFC 8996 TLS Profile
+
+          # only available if underlying TLS library supports
+          # all TLS features required for this profile
+
   +py   --profile-bcp195-nd
-          Non-downgrading BCP 195 TLS Profile (default)
+          Non-downgrading BCP 195 TLS Profile (retired)
 
   +px   --profile-bcp195
-          BCP 195 TLS Profile
+          BCP 195 TLS Profile (retired)
 
   +pz   --profile-bcp195-ex
-          Extended BCP 195 TLS Profile
-
-  +pa   --profile-aes
-          AES TLS Secure Transport Connection Profile (retired)
+          Extended BCP 195 TLS Profile (retired)
 
   +pb   --profile-basic
           Basic TLS Secure Transport Connection Profile (retired)
 
+          # only available if underlying TLS library supports 3DES
+
+  +pa   --profile-aes
+          AES TLS Secure Transport Connection Profile (retired)
+
   +pn   --profile-null
           Authenticated unencrypted communication
           (retired, was used in IHE ATNA)
 \endverbatim
 
-The Non-downgrading BCP 195 TLS Profile, which is selected by default, is
-currently the most secure choice, as older protocol versions and cipher suites
-are explicitly disabled. It does not support backward compatibility with the
-older profiles. It uses either TLS version 1.2 or 1.3 and will default to TLS
-1.3 when possible.
+The BCP 195 RFC 8996 TLS Profile, which is selected by default, is a secure
+choice while providing backward compatibility with the earlier BCP 195 profiles.
+It does not support backward compatibility with the older profiles.
+It uses either TLS version 1.2 or 1.3 and will default to TLS 1.3 when possible.
+
+The Modified BCP 195 RFC 8996 TLS Profile, which adds further constraints
+compared to the BCP 195 RFC 8996 TLS Profile, cannot be implemented with
+OpenSSL 1.0.2 to 3.0.x because it requires support for the TLS 1.2 Camellia
+ciphersuites in GCM mode, which is not available in OpenSSL. Should future
+OpenSSL releases add support for these ciphersuites, then this option will
+automatically be enabled when compiling DCMTK.
+
+The Non-downgrading BCP 195 TLS Profile, which was the default in DCMTK 3.6.7,
+also disables older protocol versions and cipher suites. It does, however,
+support DHE ciphersuites, whereas RFC 9325 recommends that these should not
+be used. It uses either TLS version 1.2 or 1.3 and will default to TLS 1.3
+when possible.
 
 The BCP 195 TLS Profile, which was the default up to DCMTK 3.6.6, will try to
 negotiate cryptographic algorithms that are currently considered secure, but
@@ -128,13 +151,17 @@ using the following option:
           add ciphersuite to list of negotiated suites
 \endverbatim
 
-The list of supported ciphersuites can be printed using the following option:
+The list of supported TLS 1.0-1.2 ciphersuites can be printed
+using the following option:
 
 \verbatim
   +cc   --list-ciphers
           show list of supported TLS ciphersuites and exit
 \endverbatim
 
+Option \c \--cipher can be specified more than once to add multiple
+ciphersuites.
+
 \section dcmtls_certstore_peer_authentication Peer authentication
 
 By default, the TLS implementation in dcmtls will require both client and server
@@ -197,6 +224,8 @@ line options for this purpose:
             add certificates in d to list of certificates
 \endverbatim
 
+Both options can be specified more than once, also in combination.
+
 \subsection dcmtls_certstore_certification_authority_file File-based management of trusted root certificates
 
 The file-based option loads a file and adds all the certificates or CRLs present
@@ -276,8 +305,7 @@ The following CRL options are available starting with DCMTK 3.6.7:
 
 \verbatim
   +crl  --add-crl-file  [f]ilename: string
-          add certificate revocation list file
-          (implies --enable-crl-vfy)
+          add certificate revocation list file (implies --enable-crl-vfy)
 
   +crv  --enable-crl-vfy
           enable leaf CRL verification
index c8cc48c3266b657ee5e1d7f77c7219d364ab3b73..03bf75b37fc12a775fca91e78ad7f3230445734a 100644 (file)
@@ -31,14 +31,56 @@ on their own priorities, e.g. by always selecting the most secure ciphersuite.
 In DCMTK, the selection of ciphersuites is based on "TLS profiles", which
 follow the secure profiles define in DICOM Part 15:
 
-- BCP 195 TLS Profile (default)
+- BCP 195 RFC 8996 TLS Profile (default)
+  This profile proposes the following set of ciphersuites:
+
+  - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2)
+
+  This profile will support TLS 1.3 when compiled against OpenSSL 1.1.1
+  or newer. In this case, the following TLS 1.3 ciphersuites will be
+  proposed additionally:
+
+  - TLS_AES_256_GCM_SHA384 (only TLS 1.3)
+  - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3)
+  - TLS_AES_128_GCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3)
+
+- Modified BCP 195 RFC 8996 TLS Profile
+  This profile proposes the following set of ciphersuites:
+
+  - TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_128_CCM (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 (only TLS 1.2)
+  - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 (only TLS 1.2)
+  - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_256_CCM (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 (only TLS 1.2)
+  - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2)
+  - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2)
+
+  - TLS_AES_256_GCM_SHA384 (only TLS 1.3)
+  - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3)
+  - TLS_AES_128_GCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3)
+
+- BCP 195 TLS Profile (retired)
   This profile proposes the following set of ciphersuites:
   - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
   - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
   - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2)
   - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (only TLS 1.2)
-  - TLS_RSA_WITH_AES_128_CBC_SHA
-  - TLS_RSA_WITH_3DES_EDE_CBC_SHA
+  - TLS_RSA_WITH_AES_128_CBC_SHA (TLS 1.0 - 1.2)
+  - TLS_RSA_WITH_3DES_EDE_CBC_SHA (TLS 1.0 - 1.2)
 
   The first four ciphersuites are modern, state-of the art ciphersuites
   but only work with TLS version 1.2 (or newer). The other two ciphersuites
@@ -47,7 +89,17 @@ follow the secure profiles define in DICOM Part 15:
   Transport Connection Profile (e.g. DCMTK versions older than 3.6.4) and
   can be used with TLS version 1.0 (or newer).
 
-- Non-downgrading BCP 195 TLS Profile
+  This profile will support TLS 1.3 when compiled against OpenSSL 1.1.1
+  or newer. In this case, the following TLS 1.3 ciphersuites will be
+  proposed additionally:
+
+  - TLS_AES_256_GCM_SHA384 (only TLS 1.3)
+  - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3)
+  - TLS_AES_128_GCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3)
+
+- Non-downgrading BCP 195 TLS Profile (retired)
   This profile proposes the following set of ciphersuites:
   - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
   - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
@@ -57,7 +109,17 @@ follow the secure profiles define in DICOM Part 15:
   Furthermore, when this profile is active, only TLS version 1.2
   or newer will be negotiated.
 
-- Extended BCP 195 TLS Profile
+  This profile will support TLS 1.3 when compiled against OpenSSL 1.1.1
+  or newer. In this case, the following TLS 1.3 ciphersuites will be
+  proposed additionally:
+
+  - TLS_AES_256_GCM_SHA384 (only TLS 1.3)
+  - TLS_CHACHA20_POLY1305_SHA256 (only TLS 1.3)
+  - TLS_AES_128_GCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_SHA256 (only TLS 1.3)
+  - TLS_AES_128_CCM_8_SHA256 (only TLS 1.3)
+
+- Extended BCP 195 TLS Profile (retired)
   This profile proposes the following set of ciphersuites:
   - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
   - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (only TLS 1.2)
@@ -123,11 +185,13 @@ may also depend on the OpenSSL library with which DCMTK is compiled:
   Connection Profile will not offer backwards compatibility with the
   Basic TLS profile.
 
-OpenSSL versions older than 1.0.1 are not supported anymore, and
-we recommend the use of OpenSSL 1.0.2 or newer since some optional
-features recommended by RFC 7525 (BCP 195) are only available starting
-with this release.
+- The TLS 1.3 ciphersuites are only available when compiled against
+  OpenSSL 1.1.1 or newer.
 
+OpenSSL versions older than 1.0.2 are not supported anymore, and
+we recommend the use of OpenSSL 1.1.1 or newer since because the
+considerably improved TLS 1.3 protocol is only available starting
+with this release.
 
 ==============================
 NOTES ON CIPHERSUITE SELECTION
@@ -201,54 +265,64 @@ OpenSSL has been compiled (see above for details).
 
   - TLS_RSA_WITH_NULL_SHA
   - TLS_RSA_WITH_3DES_EDE_CBC_SHA
-  - TLS_RSA_WITH_AES_128_GCM_SHA256
   - TLS_RSA_WITH_AES_128_CBC_SHA
+  - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
   - TLS_RSA_WITH_AES_128_CBC_SHA256
-  - TLS_RSA_WITH_AES_256_GCM_SHA384
+  - TLS_RSA_WITH_AES_128_GCM_SHA256
+  - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
+  - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
+  - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
+  - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
+  - TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
+  - TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
+  - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
   - TLS_RSA_WITH_AES_256_CBC_SHA
   - TLS_RSA_WITH_AES_256_CBC_SHA256
-  - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
-  - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
-  - TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
+  - TLS_RSA_WITH_AES_256_GCM_SHA384
+  - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
+  - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
+  - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
+  - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
+  - TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
+  - TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
   - TLS_DHE_DSS_WITH_AES_128_CBC_SHA
-  - TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
-  - TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
-  - TLS_DHE_DSS_WITH_AES_256_CBC_SHA
-  - TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
   - TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA
-  - TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA
-  - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
   - TLS_DHE_RSA_WITH_AES_128_CBC_SHA
-  - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
-  - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
-  - TLS_DHE_RSA_WITH_AES_256_CBC_SHA
-  - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
   - TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
-  - TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
-  - TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
-  - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
-  - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
-  - TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
-  - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
-  - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
-  - TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
-  - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
-  - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
-  - TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
-  - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
-  - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
-  - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
+  - TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
+  - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
+  - TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
+  - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
   - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
-  - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
-  - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
-  - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
-  - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
-  - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
   - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
+  - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
   - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
-  - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
+  - TLS_ECDHE_ECDSA_WITH_AES_128_CCM
+  - TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8
+  - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
+  - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
+  - TLS_DHE_DSS_WITH_AES_256_CBC_SHA
+  - TLS_DHE_RSA_WITH_AES_256_CBC_SHA
+  - TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
+  - TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
+  - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
+  - TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
+  - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
+  - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
   - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
+  - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
   - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
-  - TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
   - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
   - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
+  - TLS_ECDHE_ECDSA_WITH_AES_256_CCM
+  - TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8
+  - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
+  - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
+
+TLS 1.3 ciphersuites:
+
+  - TLS_AES_128_CCM_SHA256
+  - TLS_AES_128_CCM_8_SHA256
+  - TLS_AES_128_GCM_SHA256
+  - TLS_CHACHA20_POLY1305_SHA256
+  - TLS_AES_256_GCM_SHA384
index c235aceaffc79ce585ec155ba56e352f47f3b131..3c49363c5a2a4f3b1d33dc2a6a5346c5eddc029e 100644 (file)
@@ -46,8 +46,8 @@ if (tLayer->setCertificateFile("certificate.pem", SSL_FILETYPE_PEM).bad())
   return;
 }
 
-// enable the ciphersuites for the BCP 195 secure transport profile
-tLayer->setTLSProfile(TSP_Profile_BCP195);
+// enable the ciphersuites for the BCP 195 RFC 8996 secure transport profile
+tLayer->setTLSProfile(TSP_Profile_BCP_195_RFC_8996);
 tLayer->activateCipherSuites();
 
 // accept any certificate from the remote site (not recommended)
index eb55d22e9b9a656c2df740e34617be079da37d86..ebb07eee360003d5787e2de548e29254e7952617 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2018-2021, OFFIS e.V.
+ *  Copyright (C) 2018-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -51,12 +51,14 @@ enum DcmTLSSecurityProfile
 
   /** DICOM Basic TLS Secure Transport Connection Profile (retired),
     * using the ciphersuite TLS_RSA_WITH_3DES_EDE_CBC_SHA and TLS 1.0 or newer.
+    * This profile is retired.
     */
   TSP_Profile_Basic,
 
   /** DICOM AES TLS Secure Transport Connection Profile (retired),
     * using the ciphersuites TLS_RSA_WITH_AES_128_CBC_SHA and TLS_RSA_WITH_3DES_EDE_CBC_SHA,
     * and TLS 1.0 or newer.
+    * This profile is retired.
     */
   TSP_Profile_AES,
 
@@ -69,6 +71,7 @@ enum DcmTLSSecurityProfile
    *  backward compatibility with older implementations while offering much
    *  better security when used with implementations also supporting one of the
    *  BCP 195 profiles.
+    * This profile is retired.
    */
   TSP_Profile_BCP195,
 
@@ -79,6 +82,7 @@ enum DcmTLSSecurityProfile
    *  TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384.
    *  It does not provide backwards compatibility with the older Basic and AES profiles,
    *  and thus guarantees the higher security level of BCP 195.
+    * This profile is retired.
    */
   TSP_Profile_BCP195_ND,
 
@@ -92,9 +96,25 @@ enum DcmTLSSecurityProfile
    *  This profile requires DHE keys of at least 2048 bits and ECDHE keys of at least 256 bits.
    *  It does not provide backwards compatibility with the older Basic and AES profiles,
    *  and thus guarantees the higher security level of BCP 195.
+    * This profile is retired.
    */
   TSP_Profile_BCP195_Extended,
 
+  /** DICOM BCP 195 RFC 8996 TLS Profile, based on RFC 8996 and RFC 9325.
+   *  This profile only negotiates TLS 1.2 or newer, and will not fall back to
+   *  previous TLS versions. It provides the higher security level offered by the
+   *  2021 revised edition of BCP 195.
+   */
+  TSP_Profile_BCP_195_RFC_8996,
+
+  /** DICOM Modified BCP 195 RFC 8996 TLS Profile, based on RFC 8996 and RFC 9325.
+   *  This profile only negotiates TLS 1.2 or newer, and will not fall back to
+   *  previous TLS versions. It provides the higher security level offered by the
+   *  2021 revised edition of BCP 195 and implements various additional restrictions
+   *  defined in the DICOM Standard.
+   */
+  TSP_Profile_BCP_195_RFC_8996_Modified,
+
   /** IHE ATNA Profile for Unencrypted In-house Communication (retired).
    * This profile uses the ciphersuite SSL_RSA_WITH_NULL_SHA and TLS 1.0 or newer.
    * This ciphersuite offers peer authentication and integrity of communication,
@@ -118,7 +138,9 @@ enum DcmTLSCipherProtocolVersion
   /// Secure Socket Layer (SSL) version 3 or newer
   TPV_SSLv3,
   /// Transport Layer Security (TLS) version 1.2 or newer
-  TPV_TLSv12
+  TPV_TLSv12,
+  /// Transport Layer Security (TLS) version 1.3
+  TPV_TLSv13
 };
 
 
@@ -142,8 +164,10 @@ enum DcmTLSCipherKeyExchange
   TKE_ECDH_RSA,
 
   /// Diffie-Hellman key exchange
-  TKE_DH
+  TKE_DH,
 
+  /// TLS 1.3 key exchange (always based on Diffie-Hellman)
+  TKE_TLSv13
 };
 
 
@@ -164,7 +188,11 @@ enum DcmTLSCipherAuthentication
   TCA_ECDSA,
 
   /// RSA
-  TCA_RSA
+  TCA_RSA,
+
+  /// TLS 1.3 authentication, supports ECDH and RSA
+  TCA_TLSv13
+
 };
 
 
@@ -212,7 +240,31 @@ enum DcmTLSCipherMAC
   TCM_SHA384,
 
   /// Authenticated Encryption with Associated Data (AEAD)
-  TCM_AEAD
+  TCM_AEAD,
+
+  /// Cipher Block Chaining Message Authentication Code (CBC-MAC)
+  TCM_CBC_MAC
+
+};
+
+/** This enum describes the block cipher mode of operation used in a certain
+ *  TLS ciphersuite.
+ *  @remark this enum is only available if DCMTK is compiled with
+ *  OpenSSL support enabled.
+ */
+enum DcmTLSCipherMode
+{
+  /// Not applicable, e.g. stream cipher
+  TKM_NA,
+
+  /// Cipher block chaining mode
+  TKM_CBC,
+
+  /// Galois/Counter mode
+  TKM_GCM,
+
+  /// Counter and CBC-MAC Mode
+  TKM_CCM
 
 };
 
@@ -279,7 +331,7 @@ public:
    */
   void clearTLSProfile();
 
-  /** adds a ciphersuite to the list of ciphersuites for TLS negotiation.
+  /** adds a TLS 1.0-1.2 ciphersuite to the list of ciphersuites for TLS negotiation.
    *  It is the responsibility of the user to ensure that the added ciphersuite
    *  does not break the rules of the selected profile. Use with care!
    *  @param suite TLS ciphersuite name, in the official TLS name form.
@@ -288,7 +340,7 @@ public:
   OFCondition addCipherSuite(const char *suite);
 
   /** returns a string in OpenSSL syntax that contains the currently defined
-   *  list of TLS ciphersuites.
+   *  list of TLS 1.0-1.2 ciphersuites.
    *  @param cslist The list of ciphersuites in OpenSSL syntax is written to this string.
    *  @param isServer true if the list of cipher suites is intended for
    *    a TLS server. In this case, the list of ciphersuites will be reordered
@@ -296,6 +348,15 @@ public:
    */
   void getListOfCipherSuitesForOpenSSL(OFString& cslist, OFBool isServer) const;
 
+  /** returns a string in OpenSSL syntax that contains the currently defined
+   *  list of TLS 1.3 ciphersuites.
+   *  @param cslist The list of ciphersuites in OpenSSL syntax is written to this string.
+   *  @param isServer true if the list of cipher suites is intended for
+   *    a TLS server. In this case, the list of ciphersuites will be reordered
+   *    from strongest to weakest, as recommended by BCP 195.
+   */
+  void getListOfTLS13CipherSuitesForOpenSSL(OFString& cslist, OFBool isServer) const;
+
   /** returns the set of flags that need to be activated in OpenSSL
    *  depending on the selected TLS profile.
    *  @return flags for openssl
@@ -323,83 +384,172 @@ public:
    */
   OFBool isTLS13Enabled() const;
 
-  /** print a list of supported ciphersuites to the given output stream
+  /** print a list of supported TLS 1.0-1.2 ciphersuites to the given output stream
    *  @param os output stream
    */
   void printSupportedCiphersuites(STD_NAMESPACE ostream& os) const;
 
-  /** returns the number of known ciphersuites.
+  /** print a list of supported TLS 1.3 ciphersuites to the given output stream
+   *  @param os output stream
+   */
+  void printSupportedTLS13Ciphersuites(STD_NAMESPACE ostream& os) const;
+
+  /** returns the number of known TLS 1.0-1.2 ciphersuites.
    *  @return number of known ciphersuites
    */
   static size_t getNumberOfCipherSuites();
 
-  /** looks up the index of the given ciphersuite by name
+  /** returns the number of known TLS 1.3 ciphersuites.
+   *  @return number of known ciphersuites
+   */
+  static size_t getNumberOfTLS13CipherSuites();
+
+  /** looks up the index of the given TLS 1.0-1.2 ciphersuite by name
    *  @param tlsCipherSuiteName ciphersuite name in RFC 2246 form
    *  @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown
    */
   static size_t lookupCiphersuite(const char *tlsCipherSuiteName);
 
-  /** looks up the index of the given ciphersuite by OpenSSL name
+  /** looks up the index of the given TLS 1.3 ciphersuite by name
+   *  @param tlsCipherSuiteName ciphersuite name in RFC 2246 form
+   *  @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown
+   */
+  static size_t lookupTLS13Ciphersuite(const char *tlsCipherSuiteName);
+
+  /** looks up the index of the given TLS 1.0-1.2 ciphersuite by OpenSSL name
    *  @param opensslCipherSuiteName ciphersuite name in the form used by OpenSSL
    *  @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown
    */
   static size_t lookupCiphersuiteByOpenSSLName(const char *opensslCipherSuiteName);
 
-  /** returns a ciphersuite name in RFC 2246 (TLS) form
+  /** looks up the index of the given TLS 1.3 ciphersuite by OpenSSL name
+   *  @param opensslCipherSuiteName ciphersuite name in the form used by OpenSSL
+   *  @returns index into list of ciphersuites, DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex if ciphersuite unknown
+   */
+  static size_t lookupTLS13CiphersuiteByOpenSSLName(const char *opensslCipherSuiteName);
+
+  /** returns a TLS 1.0-1.2 ciphersuite name in RFC 2246 (TLS) form
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return ciphersuite name
    */
   static const char *getTLSCipherSuiteName(size_t idx);
 
-  /** returns a ciphersuite name in OpenSSL form
+  /** returns a TLS 1.3 ciphersuite name in RFC 2246 (TLS) form
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return ciphersuite name
+   */
+  static const char *getTLS13CipherSuiteName(size_t idx);
+
+  /** returns a TLS 1.0-1.2 ciphersuite name in OpenSSL form
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return ciphersuite name
    */
   static const char *getOpenSSLCipherSuiteName(size_t idx);
 
-  /** returns the minimum SSL/TLS version required for the ciphersuite with the given index
+  /** returns a TLS 1.3 ciphersuite name in OpenSSL form
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return ciphersuite name
+   */
+  static const char *getOpenSSLTLS13CipherSuiteName(size_t idx);
+
+  /** returns the minimum SSL/TLS version required for the TLS 1.0-1.2 ciphersuite with the given index
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return minimum SSL/TLS version required
    */
   static DcmTLSCipherProtocolVersion getCipherSuiteProtocolVersion(size_t idx);
 
-  /** returns the key exchange protocol used by the ciphersuite with the given index
+  /** returns the minimum SSL/TLS version required for the TLS 1.3 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return minimum SSL/TLS version required
+   */
+  static DcmTLSCipherProtocolVersion getTLS13CipherSuiteProtocolVersion(size_t idx);
+
+  /** returns the key exchange protocol used by the TLS 1.0-1.2 ciphersuite with the given index
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return key exchange protocol
    */
   static DcmTLSCipherKeyExchange getCipherSuiteKeyExchange(size_t idx);
 
-  /** returns the authentication algorithm used by the ciphersuite with the given index
+  /** returns the key exchange protocol used by the TLS 1.3 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return key exchange protocol
+   */
+  static DcmTLSCipherKeyExchange getTLS13CipherSuiteKeyExchange(size_t idx);
+
+  /** returns the authentication algorithm used by the TLS 1.0-1.2 ciphersuite with the given index
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return authentication algorithm
    */
   static DcmTLSCipherAuthentication getCipherSuiteAuthentication(size_t idx);
 
-  /** returns the encryption algorithm used by  the ciphersuite with the given index
+  /** returns the authentication algorithm used by the TLS 1.3 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return authentication algorithm
+   */
+  static DcmTLSCipherAuthentication getTLS13CipherSuiteAuthentication(size_t idx);
+
+  /** returns the encryption algorithm used by the TLS 1.0-1.2 ciphersuite with the given index
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return minimum SSL/TLS version required
    */
   static DcmTLSCipherEncryption getCipherSuiteEncryption(size_t idx);
 
-  /** returns the message authentication code (MAC) algorithm used by  the ciphersuite with the given index
+  /** returns the encryption algorithm used by the TLS 1.3 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return minimum SSL/TLS version required
+   */
+  static DcmTLSCipherEncryption getTLS13CipherSuiteEncryption(size_t idx);
+
+  /** returns the message authentication code (MAC) algorithm used by the TLS 1.0-1.2 ciphersuite with the given index
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return message authentication code (MAC) algorithm
    */
   static DcmTLSCipherMAC getCipherSuiteMAC(size_t idx);
 
-  /** returns the symmetric key size used by the ciphersuite with the given index
+  /** returns the message authentication code (MAC) algorithm used by the TLS 1.3 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return message authentication code (MAC) algorithm
+   */
+  static DcmTLSCipherMAC getTLS13CipherSuiteMAC(size_t idx);
+
+  /** returns the mode of operation used by the TLS 1.0-1.2 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return mode of operation for block ciphers, TKM_NA otherwise
+   */
+  static DcmTLSCipherMode getCipherSuiteMode(size_t idx);
+
+  /** returns the mode of operation used by the TLS 1.3 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return mode of operation for block ciphers, TKM_NA otherwise
+   */
+  static DcmTLSCipherMode getTLS13CipherSuiteMode(size_t idx);
+
+  /** returns the symmetric key size used by the TLS 1.0-1.2 ciphersuite with the given index
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return symmetric key size, in bits
    */
   static size_t getCipherSuiteKeySize(size_t idx);
 
-  /** returns the effective symmetric key size (i.e. security level) of the ciphersuite with the given index.
+  /** returns the symmetric key size used by the TLS 1.3 ciphersuite with the given index
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return symmetric key size, in bits
+   */
+  static size_t getTLS13CipherSuiteKeySize(size_t idx);
+
+  /** returns the effective symmetric key size (i.e. security level) of the TLS 1.0-1.2 ciphersuite with the given index.
    *  BCP 195 (2015) recommends that no ciphersuites with an effective key size of less than 112 bits should be used anymore with TLS.
    *  @param idx index, must be < getNumberOfCipherSuites()
    *  @return effective symmetric key size, in bits
    */
   static size_t getCipherSuiteEffectiveKeySize(size_t idx);
 
+  /** returns the effective symmetric key size (i.e. security level) of the TLS 1.3 ciphersuite with the given index.
+   *  BCP 195 (2015) recommends that no ciphersuites with an effective key size of less than 112 bits should be used anymore with TLS.
+   *  @param idx index, must be < getNumberOfCipherSuites()
+   *  @return effective symmetric key size, in bits
+   */
+  static size_t getTLS13CipherSuiteEffectiveKeySize(size_t idx);
+
   /** look up the name of the given security profile
    *  @param profile the given security profile
    *  @return name of security profile, never NULL.
@@ -417,24 +567,33 @@ private:
   /// private undefined assignment operator
   DcmTLSCiphersuiteHandler& operator=(const DcmTLSCiphersuiteHandler&);
 
-  /** determine the set of ciphersuites that are supported both by DCMTK
+  /** determine the set of TLS 1.0-1.2 ciphersuites that are supported both by DCMTK
    *  and the OpenSSL library we are currently using
    */
   void determineSupportedCiphers();
 
-  /** add ciphersuite by name, print error if unsupported
+  /** add TLS 1.0-1.2 ciphersuite by name, print error if unsupported
    *  @param name ciphersuite name in RFC 2246 form
    *  @return EC_Normal if successful, an error code otherwise
    */
   OFCondition addRequiredCipherSuite(const char *name);
 
+  /** add TLS 1.3 ciphersuite by name, print error if unsupported
+   *  @param name ciphersuite name in RFC 2246 form
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  OFCondition addRequiredTLS13CipherSuite(const char *name);
+
   /** add 3DES ciphersuite, print warning if unsupported
    */
   void addOptional3DESCipherSuite();
 
-  /// current list of ciphersuites
+  /// current list of ciphersuites for TLS 1.0-1.2
   OFVector<size_t> ciphersuiteList;
 
+  /// current list of ciphersuites for TLS 1.3
+  OFVector<size_t> tls13ciphersuiteList;
+
   /// currently selected DICOM TLS security profile
   DcmTLSSecurityProfile currentProfile;
 
index 8a23d3a9675da7ee6999ef6e1710563c307c02bd..fe32dd9032d66b1709bcf983937e20b090f671fc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2017-2021, OFFIS e.V.
+ *  Copyright (C) 2017-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -233,6 +233,9 @@ extern DCMTK_DCMTLS_EXPORT const DcmTLSECGenericOpenSSLError DCMTLS_EC_GenericOp
 /// condition constant: OpenSSL I/O error, not further specified (SSL_ERROR_SYSCALL)
 extern DCMTK_DCMTLS_EXPORT const OFConditionConst DCMTLS_EC_OpenSSLIOError;
 
+/// condition constant: DICOM TLS Secure Transport Connection Profile not supported
+extern DCMTK_DCMTLS_EXPORT const OFConditionConst DCMTLS_EC_TLSProfileNotSupported;
+
 // X.509 Verification Errors. These use condition codes > DCMTLS_EC_X509Verify_Offset.
 
 /// condition constant: X.509 certificate verification error - unspecified
index 6781575df93181ef393df910dbf2850d79428e42..91e1756758812b52cd1cabe47a78b170a092a2f5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2021, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -197,9 +197,13 @@ public:
   /** loads the certificate (public key) used for authentication of this application from a file.
    *  @param fileName path to the certificate file
    *  @param fileType, must be SSL_FILETYPE_PEM or SSL_FILETYPE_ASN1
+   *  @param profile the currently active TLS profile
    *  @return EC_Normal if successful, an error code otherwise
    */
-  OFCondition setCertificateFile(const char *fileName, DcmKeyFileFormat fileType);
+  OFCondition setCertificateFile(
+    const char *fileName,
+    DcmKeyFileFormat fileType,
+    DcmTLSSecurityProfile profile);
 
   /** checks if the private key and the certificate set using setPrivateKeyFile()
    *  and setCertificateFile() match, i.e. if they establish a private/public key pair.
@@ -279,6 +283,11 @@ public:
    */
   OFCondition setTLSProfile(DcmTLSSecurityProfile profile);
 
+  /** return the currently selected TLS profile
+   *  @return currently selected TLS profile
+   */
+  DcmTLSSecurityProfile getTLSProfile() const;
+
   /** clear the current list of ciphersuites. Equivalent to
    *  calling setTLSProfile(TSP_Profile_None).
    */
@@ -326,6 +335,29 @@ public:
    */
   OFBool writeRandomSeed(const char *randFile);
 
+  /** set SNI server name to be used in outgoing connections
+   *  @param s server name, NULL to disable SNI
+   */
+  void setClientSNI(const char *s) { clientSNI = s; }
+
+  /** set SNI server name to be expected and checked in incoming connections
+   *  if the ClientHello message contains an SNI field
+   *  @param s server name, NULL to disable SNI
+   */
+  void setServerSNI(const char *s) { serverSNI = s; }
+
+  /** check if the requested SNI server name s matches the
+   *  SNI server name defined by a prior call to setServerSNI().
+   *  @param s requested SNI server name
+   *  @return OFTrue if server names matches, OFFalse otherwise
+   */
+  OFBool checkServerSNI(const char *s) const;
+
+  /** get the SNI server name
+   * @return SNI server name. Never returns NULL.
+   */
+  const char *getServerSNI() const;
+
   /** adds the contents of a file to the seed for the cryptographic
    *  pseudo-random number generator. The file should contain real
    *  random entropy data gathered from keystrokes, system events,
@@ -397,15 +429,22 @@ public:
    */
   static int getRSAKeySize(X509 *certificate);
 
-  /** checks the BCP 195 recommendations that RSA certificates
-   *  should use SHA-256 hash keys. We also accept better SHA-2
-   *  hash keys (SHA-384 and SHA-512).
+  /** checks for the use of hash keys that are broken and too insecure to permit.
+   *  Currently MD2, MD4 and MD5 are on our "blacklist".
    *  @param certificate X.509 certificate
-   *  @return NULL if everything is OK (i.e. the certificate is
-   *    not RSA, or it is RSA and uses SHA-256 or better),
+   *  @return NULL if the hash key algorithm is not on the blacklist,
    *    the name of the hash key algorithm used otherwise.
    */
-  static const char *checkRSAHashKeyIsSHA2(X509 *certificate);
+  static const char *checkHashKeyIsTooInSecure(X509 *certificate);
+
+  /** checks the RFC 8325 recommendations that certificates
+   *  should use SHA-256 (or better) hash keys.
+   *  We accept the SHA-2 and SHA-3 family with 256 or more bits.
+   *  @param certificate X.509 certificate
+   *  @return NULL if the hash key algorithm is considered secure,
+   *    the name of the hash key algorithm used otherwise.
+   */
+  static const char *checkHashKeyIsSecure(X509 *certificate);
 
   /** returns the version name of the OpenSSL version used.
    *  @return OpenSSL version name, never NULL.
@@ -465,6 +504,11 @@ public:
    */
   native_handle_type getNativeHandle();
 
+  /// global variable populated in initializeOpenSSL().
+  /// It contains an index number that is unique for the program lifetime
+  /// and can be used to store application specific data in an SSL structure.
+  static int contextStoreIndex;
+
 private:
 
   /// private undefined copy constructor
@@ -493,6 +537,22 @@ private:
 
   /// network role for this TLS layer
   T_ASC_NetworkRole role;
+
+  /// SNI server name to be requested in outgoing connections
+  /// @remark this member is only available if DCMTK is compiled with
+  /// OpenSSL support enabled.
+  const char* clientSNI;
+
+  /// SNI server name to be expected in incoming connections
+  /// @remark this member is only available if DCMTK is compiled with
+  /// OpenSSL support enabled.
+  const char* serverSNI;
+
+  /// flag indicating whether a DSA certificate has been loaded.
+  /// In this case, TLS 1.3 cannot be used because it does not support
+  /// DSA certificates.
+  OFBool certificateTypeIsDSA;
+
 };
 
 #endif /* WITH_OPENSSL */
index ee97113c16eb8a192e1c40d4cad409074af0a638..b9b702b8c1c247f72764606a268e8f59fc8cf00f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2017-2021, OFFIS e.V.
+ *  Copyright (C) 2017-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,61 +33,21 @@ class DcmTLSTransportLayer;
 struct T_ASC_Network;
 struct T_ASC_Parameters;
 
-/** A class that handles the command line arguments used by applications
- *  that support TLS.
- *  DcmTLSOptions handles storing the relevant options, printing the associated
- *  help text an information (e.g. OpenSSL library version), parsing and
- *  evaluating the given command line arguments and creating a
- *  DcmTLSTransportLayer object based on the collected information.
+/** A class that handles the TLS options for DCMTK applications.
+ *  DcmTLSOptionsBase allows a derived class to store the relevant options
+ *  and to create a DcmTLSTransportLayer object based on the collected information.
  */
-class DCMTK_DCMTLS_EXPORT DcmTLSOptions
+class DCMTK_DCMTLS_EXPORT DcmTLSOptionsBase
 {
 public:
 
     /** Constructor.
      *  @param networkRole the network role to create a transport layer for
      */
-    DcmTLSOptions(T_ASC_NetworkRole networkRole);
+    DcmTLSOptionsBase(T_ASC_NetworkRole networkRole);
 
     /// Destructor
-    virtual ~DcmTLSOptions();
-
-    /** Add TLS specific command line options to the OFCommandLine object
-     *  passed to the constructor.
-     *  @param cmd a reference to an OFCommandLine object used to parse
-     *    the command line argument give to the calling application.
-     */
-    void addTLSCommandlineOptions(OFCommandLine& cmd);
-
-    /** Parse and evaluate the given command line arguments.
-     *  @param app a reference to an OFConsoleApplication object used in the
-     *    calling application.
-     *  @param cmd a reference to an OFCommandLine object used to parse
-     *    the command line argument give to the calling application.
-     */
-    void parseArguments(OFConsoleApplication& app, OFCommandLine& cmd);
-
-    /** Create a DcmTLSTransportLayer object based on the collected command
-     *  line arguments.
-     *  @param net pointer to network object in which the transport layer
-     *    should be registered. May be NULL, in which case the caller
-     *    must activate the transport layer manually using ASC_setTransportLayer().
-     *  @param params pointer to the association negotiation parameters object.
-     *    For an association acceptor, this parameter is passed as NULL.
-     *    If NULL is passed and the caller in an association requestor,
-     *    then it is the responsibility of the caller to call ASC_setTransportLayerType()
-     *    and set the right transport layer type for the association parameters.
-     *  @param app a reference to an OFConsoleApplication object used in the
-     *    calling application.
-     *  @param cmd a reference to an OFCommandLine object used to parse
-     *    the command line argument give to the calling application.
-     *  @return EC_Normal if successful, an error code otherwise
-     */
-    OFCondition createTransportLayer(
-      T_ASC_Network *net,
-      T_ASC_Parameters *params,
-      OFConsoleApplication& app,
-      OFCommandLine& cmd);
+    virtual ~DcmTLSOptionsBase();
 
     /** Update the random seed file if this was requested by the given command
      *  line arguments.
@@ -96,26 +56,26 @@ public:
      *    error condition indicating what went wrong in case the random seed
      *    file could not be updated.
      */
-    OFCondition writeRandomSeed();
+    virtual OFCondition writeRandomSeed();
 
     /** Returns true if a secure connection was requested, false otherwise.
      *  Caller must ensure that parseArguments() has been run before this method.
      *  @return true if secure connection requested, false otherwise
      */
-    OFBool secureConnectionRequested() const;
+    virtual OFBool secureConnectionRequested() const;
 
     /** Returns a pointer to the transport layer object, or NULL if the object
      *  has not yet been created by a call to createTransportLayer().
      *  @return pointer to transport layer object, may be NULL.
      */
-    DcmTransportLayer *getTransportLayer();
+    virtual DcmTransportLayer *getTransportLayer();
 
     /** loads a certificate or certificate chain from a file and checks whether
      *  it can be verified against the current settings of the trust store.
      *  @param fileName path to the certificate file
      *  @return EC_Normal if verification succeeded, an error code otherwise
      */
-    OFCondition verifyClientCertificate(const char *fileName);
+    virtual OFCondition verifyClientCertificate(const char *fileName);
 
     /** loads a certificate file and checks whether it is a
      *  valid (e.g. non-expired), self-signed root certificate that
@@ -123,7 +83,7 @@ public:
      *  @param fileName path to the certificate file
      *  @return EC_Normal if certificate is a root certificate, an error code otherwise
      */
-    OFCondition isRootCertificate(const char *fileName);
+    virtual OFCondition isRootCertificate(const char *fileName);
 
     /** checks if the command line option --list-ciphers was given.
      *  In this case the list of supported TLS ciphersuites should be
@@ -145,7 +105,7 @@ public:
      */
     static void printLibraryVersion();
 
-private:
+protected:
 #ifdef WITH_OPENSSL
     /// flag indicating the file format of certificates and private keys: PEM or ASN.1
     /// @remark this member is only available if DCMTK is compiled with
@@ -207,6 +167,21 @@ private:
     /// indicates whether we act as client, server or both
     T_ASC_NetworkRole opt_networkRole;
 
+    /// SNI server name to be requested in outgoing connections
+    /// @remark this member is only available if DCMTK is compiled with
+    /// OpenSSL support enabled.
+    const char* opt_clientSNI;
+
+    /// SNI server name to be expected in incoming connections
+    /// @remark this member is only available if DCMTK is compiled with
+    /// OpenSSL support enabled.
+    const char* opt_serverSNI;
+
+    /// CRL verification mode
+    /// @remark this member is only available if DCMTK is compiled with
+    /// OpenSSL support enabled.
+    DcmTLSCRLVerification opt_crlMode;
+
     /// pointer to the secure transport layer managed by this object
     /// @remark this member is only available if DCMTK is compiled with
     /// OpenSSL support enabled.
@@ -214,4 +189,65 @@ private:
 #endif // WITH_OPENSSL
 };
 
+
+/** A class that handles the command line arguments used by applications
+ *  that support TLS.
+ *  DcmTLSOptions handles storing the relevant options, printing the associated
+ *  help text an information (e.g. OpenSSL library version), parsing and
+ *  evaluating the given command line arguments and creating a
+ *  DcmTLSTransportLayer object based on the collected information.
+ */
+class DCMTK_DCMTLS_EXPORT DcmTLSOptions: public DcmTLSOptionsBase
+{
+public:
+
+    /** Constructor.
+     *  @param networkRole the network role to create a transport layer for
+     */
+    DcmTLSOptions(T_ASC_NetworkRole networkRole);
+
+    /// Destructor
+    virtual ~DcmTLSOptions();
+
+    /** Add TLS specific command line options to the OFCommandLine object
+     *  passed to the constructor.
+     *  @param cmd a reference to an OFCommandLine object used to parse
+     *    the command line argument give to the calling application.
+     */
+    virtual void addTLSCommandlineOptions(OFCommandLine& cmd);
+
+    /** Parse and evaluate the given command line arguments.
+     *  @param app a reference to an OFConsoleApplication object used in the
+     *    calling application.
+     *  @param cmd a reference to an OFCommandLine object used to parse
+     *    the command line argument give to the calling application.
+     */
+    virtual void parseArguments(OFConsoleApplication& app, OFCommandLine& cmd);
+
+    /** Create a DcmTLSTransportLayer object based on the collected command
+     *  line arguments.
+     *  @param net pointer to network object in which the transport layer
+     *    should be registered. May be NULL, in which case the caller
+     *    must activate the transport layer manually using ASC_setTransportLayer().
+     *  @param params pointer to the association negotiation parameters object.
+     *    For an association acceptor, this parameter is passed as NULL.
+     *    If NULL is passed and the caller in an association requestor,
+     *    then it is the responsibility of the caller to call ASC_setTransportLayerType()
+     *    and set the right transport layer type for the association parameters.
+     *  @param app a reference to an OFConsoleApplication object used in the
+     *    calling application.
+     *  @param cmd a reference to an OFCommandLine object used to parse
+     *    the command line argument give to the calling application.
+     *  @return EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition createTransportLayer(
+      T_ASC_Network *net,
+      T_ASC_Parameters *params,
+      OFConsoleApplication& app,
+      OFCommandLine& cmd);
+
+private:
+
+};
+
 #endif // TLSOPT_H
index 77415062e007e14124c6f055d6a362035215188f..32fbda46adf838191aa140b24e6d10d084b03f2d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2022, OFFIS e.V.
+ *  Copyright (C) 2010-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -34,8 +34,9 @@
  *  class is derived from the general DcmSCU class and just adds the corresponding TLS
  *  capabilities.
  *  @remark This class is only available if DCMTK is compiled with OpenSSL support enabled.
- *  @warning This class is EXPERIMENTAL. Be careful to use it in production environment.
- *    API changes in the future are possible and likely to happen.
+ *  @warning This class is DEPRECATED and will be removed from future DCMTK releases.
+ *    Instead of using this class, directly use class DcmSCU, which offers the method
+ *    DcmSCU::useSecureConnection() to enable a TLS connection.
  */
 class DCMTK_DCMTLS_EXPORT DcmTLSSCU : public DcmSCU
 {
index 4729fd5178ea01763dc45fb0fef54afc54e31ffc..da2813304a289ff5256f38efa1d16fb808d3db92 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2018-2021, OFFIS e.V.
+ *  Copyright (C) 2018-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -25,6 +25,7 @@
 #include "dcmtk/dcmtls/tlsdefin.h"
 #include "dcmtk/dcmtls/tlscond.h"
 #include "dcmtk/dcmtls/tlslayer.h"    /* for TLS_ERROR macro */
+#include "tlsfmacr.h"                 /* for OpenSSL feature macros */
 
 #ifdef WITH_OPENSSL
 
@@ -48,6 +49,7 @@ struct DcmCipherSuiteList
   DcmTLSCipherAuthentication authentication;
   DcmTLSCipherEncryption encryption;
   DcmTLSCipherMAC mac;
+  DcmTLSCipherMode mode;
   size_t keySize;
   size_t effectiveKeySize;
 };
@@ -70,93 +72,139 @@ static const DcmCipherSuiteList globalCipherSuiteList[] =
     // -- first all ciphersuites without forward secrecy --
 
     // historic ciphersuites
-    {"TLS_RSA_WITH_NULL_SHA",                         SSL3_TXT_RSA_NULL_SHA,                           TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_None,     TCM_SHA1,     0,   0},
-    {"TLS_RSA_WITH_3DES_EDE_CBC_SHA",                 SSL3_TXT_RSA_DES_192_CBC3_SHA,                   TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_3DES,     TCM_SHA1,   168, 112},
+    {"TLS_RSA_WITH_NULL_SHA",                         SSL3_TXT_RSA_NULL_SHA,                           TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_None,     TCM_SHA1,    TKM_NA,     0,   0},
+    {"TLS_RSA_WITH_3DES_EDE_CBC_SHA",                 SSL3_TXT_RSA_DES_192_CBC3_SHA,                   TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_3DES,     TCM_SHA1,    TKM_CBC,  168, 112},
 
     // 128 bit encryption with static RSA
-    {"TLS_RSA_WITH_AES_128_CBC_SHA",                  TLS1_TXT_RSA_WITH_AES_128_SHA,                   TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA1,   128, 128},
-    {"TLS_RSA_WITH_CAMELLIA_128_CBC_SHA",             TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA,          TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_Camellia, TCM_SHA1,   128, 128},
-    {"TLS_RSA_WITH_AES_128_CBC_SHA256",               TLS1_TXT_RSA_WITH_AES_128_SHA256,                TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA256, 128, 128},
-    {"TLS_RSA_WITH_AES_128_GCM_SHA256",               TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256,            TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AESGCM,   TCM_AEAD,   128, 128},
+    {"TLS_RSA_WITH_AES_128_CBC_SHA",                  TLS1_TXT_RSA_WITH_AES_128_SHA,                   TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_RSA_WITH_CAMELLIA_128_CBC_SHA",             TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA,          TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_Camellia, TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_RSA_WITH_AES_128_CBC_SHA256",               TLS1_TXT_RSA_WITH_AES_128_SHA256,                TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA256,  TKM_CBC,  128, 128},
+    {"TLS_RSA_WITH_AES_128_GCM_SHA256",               TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256,            TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  128, 128},
 
     // 128 bit encryption with ECDH
-    {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",           TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA,        TPV_SSLv3,  TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA1,   128, 128},
-    {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",             TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA,          TPV_SSLv3,  TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA1,   128, 128},
-    {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256",        TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256,         TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA256, 128, 128},
-    {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256",          TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256,           TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA256, 128, 128},
-    {"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",        TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,     TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,   128, 128},
-    {"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",          TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256,       TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,   128, 128},
+    {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",           TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA,        TPV_SSLv3,  TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",             TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA,          TPV_SSLv3,  TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256",        TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256,         TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA256,  TKM_CBC,  128, 128},
+    {"TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256",          TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256,           TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA256,  TKM_CBC,  128, 128},
+    {"TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256",        TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256,     TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  128, 128},
+    {"TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256",          TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256,       TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  128, 128},
 
     // 256 bit encryption with static RSA
-    {"TLS_RSA_WITH_CAMELLIA_256_CBC_SHA",             TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA,          TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_Camellia, TCM_SHA1,   256, 256},
-    {"TLS_RSA_WITH_AES_256_CBC_SHA",                  TLS1_TXT_RSA_WITH_AES_256_SHA,                   TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA1,   256, 256},
-    {"TLS_RSA_WITH_AES_256_CBC_SHA256",               TLS1_TXT_RSA_WITH_AES_256_SHA256,                TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA256, 256, 256},
-    {"TLS_RSA_WITH_AES_256_GCM_SHA384",               TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384,            TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AESGCM,   TCM_AEAD,   256, 256},
+    {"TLS_RSA_WITH_CAMELLIA_256_CBC_SHA",             TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA,          TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_Camellia, TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_RSA_WITH_AES_256_CBC_SHA",                  TLS1_TXT_RSA_WITH_AES_256_SHA,                   TPV_SSLv3,  TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_RSA_WITH_AES_256_CBC_SHA256",               TLS1_TXT_RSA_WITH_AES_256_SHA256,                TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AES,      TCM_SHA256,  TKM_CBC,  256, 256},
+    {"TLS_RSA_WITH_AES_256_GCM_SHA384",               TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384,            TPV_TLSv12, TKE_RSA,        TCA_RSA,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  256, 256},
 
     // 256 bit encryption with static ECDH
-    {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",           TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA,        TPV_SSLv3,  TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA1,   256, 256},
-    {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",             TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA,          TPV_SSLv3,  TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA1,   256, 256},
-    {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384",        TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384,         TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA384, 256, 256},
-    {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384",          TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384,           TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA384, 256, 256},
-    {"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",        TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,     TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,   256, 256},
-    {"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",          TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384,       TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,   256, 256},
+    {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",           TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA,        TPV_SSLv3,  TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",             TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA,          TPV_SSLv3,  TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384",        TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384,         TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AES,      TCM_SHA384,  TKM_CBC,  256, 256},
+    {"TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384",          TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384,           TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AES,      TCM_SHA384,  TKM_CBC,  256, 256},
+    {"TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384",        TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384,     TPV_TLSv12, TKE_ECDH_ECDSA, TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  256, 256},
+    {"TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384",          TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384,       TPV_TLSv12, TKE_ECDH_RSA,   TCA_ECDH,   TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  256, 256},
 
     // -- then all ciphersuites with forward secrecy --
 
-    // 128 bit encryption with ECDHE
-    {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",          TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,       TPV_SSLv3,  TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA1,   128, 128},
-    {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",            TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,         TPV_SSLv3,  TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA1,   128, 128},
-    {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256,        TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA256, 128, 128},
-    {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",         TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256,          TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA256, 128, 128},
-    {"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,    TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AESGCM,   TCM_AEAD,   128, 128},
-    {"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",         TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256,      TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AESGCM,   TCM_AEAD,   128, 128},
-
     // 128 bit encryption with DHE
-    {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",              TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,               TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA1,   128, 128},
-    {"TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA",         TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_Camellia, TCM_SHA1,   128, 128},
-    {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA",              TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,               TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA1,   128, 128},
-    {"TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA",         TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_Camellia, TCM_SHA1,   128, 128},
-    {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",           TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256,            TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA256, 128, 128},
-    {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256",           TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256,            TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA256, 128, 128},
-    {"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",           TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256,        TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AESGCM,   TCM_AEAD,   128, 128},
-    {"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",           TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256,        TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AESGCM,   TCM_AEAD,   128, 128},
+    {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA",              TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,               TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA",         TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_Camellia, TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA",              TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,               TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA",         TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_Camellia, TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_DHE_DSS_WITH_AES_128_CBC_SHA256",           TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256,            TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA256,  TKM_CBC,  128, 128},
+    {"TLS_DHE_RSA_WITH_AES_128_CBC_SHA256",           TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256,            TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA256,  TKM_CBC,  128, 128},
+    {"TLS_DHE_DSS_WITH_AES_128_GCM_SHA256",           TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256,        TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  128, 128},
+    {"TLS_DHE_RSA_WITH_AES_128_GCM_SHA256",           TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256,        TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  128, 128},
 
-    // 256 bit encryption with ECDHE
-    {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",          TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,       TPV_SSLv3,  TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA1,   256, 256},
-    {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",            TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,         TPV_SSLv3,  TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA1,   256, 256},
-    {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384,        TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA384, 256, 256},
-    {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",         TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384,          TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA384, 256, 256},
+    // 128 bit encryption with ECDHE
+    {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",          TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,       TPV_SSLv3,  TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",            TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,         TPV_SSLv3,  TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA1,    TKM_CBC,  128, 128},
+    {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256,        TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA256,  TKM_CBC,  128, 128},
+    {"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",         TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256,          TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA256,  TKM_CBC,  128, 128},
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+     /* Apparently we support the CAMELLIA ciphersuites in Galois/counter mode defined in RFC 6367 */
+    {"TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256",  TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA384, TPV_TLSv12, TKE_ECDH,     TCA_ECDSA,  TCE_Camellia, TCM_SHA256,  TKM_GCM,  128, 128},
+    {"TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256",    TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA384,   TPV_TLSv12, TKE_ECDH,     TCA_RSA,    TCE_Camellia, TCM_SHA256,  TKM_GCM,  128, 128},
+#endif
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8
+    /* OpenSSL 1.1.1 supports the AES-CCM Elliptic Curve Cryptography (ECC) ciphersuites defined in RFC 7251 */
+    {"TLS_ECDHE_ECDSA_WITH_AES_128_CCM",              TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM,           TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_CBC_MAC, TKM_CCM,  128, 128},
+    {"TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8",            TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8,         TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_CBC_MAC, TKM_CCM,  128, 128},
+#endif
+    {"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,    TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  128, 128},
+    {"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",         TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256,      TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  128, 128},
 
+    // 256 bit encryption with DHE
+    {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA",              TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,               TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",              TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,               TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA",         TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_Camellia, TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA",         TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_Camellia, TCM_SHA1,    TKM_CBC,  256, 256},
 #ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305
     /* OpenSSL 1.1.0 supports the ChaCha20-Poly1305 ciphersuites defined in RFC 7905 */
-    {"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,     TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_ChaCha20, TCM_AEAD,   256, 256},
-    {"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",   TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305,       TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_ChaCha20, TCM_AEAD,   256, 256},
+    {"TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256",     TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305,         TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_ChaCha20, TCM_AEAD,    TKM_NA,   256, 256},
 #endif
-    {"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,    TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AESGCM,   TCM_AEAD,   256, 256},
-    {"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",         TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384,      TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AESGCM,   TCM_AEAD,   256, 256},
+    {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",           TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256,            TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA256,  TKM_CBC,  256, 256},
+    {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256",           TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256,            TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA256,  TKM_CBC,  256, 256},
+    {"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",           TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384,        TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  256, 256},
+    {"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",           TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384,        TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  256, 256},
 
-    // 256 bit encryption with DHE
-    {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA",              TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,               TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA1,   256, 256},
-    {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA",              TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,               TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA1,   256, 256},
-    {"TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA",         TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_DSS,    TCE_Camellia, TCM_SHA1,   256, 256},
-    {"TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA",         TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,      TPV_SSLv3,  TKE_DH,         TCA_RSA,    TCE_Camellia, TCM_SHA1,   256, 256},
-    {"TLS_DHE_DSS_WITH_AES_256_CBC_SHA256",           TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256,            TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AES,      TCM_SHA256, 256, 256},
-    {"TLS_DHE_RSA_WITH_AES_256_CBC_SHA256",           TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256,            TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AES,      TCM_SHA256, 256, 256},
+    // 256 bit encryption with ECDHE
+    {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",          TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,       TPV_SSLv3,  TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",            TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,         TPV_SSLv3,  TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA1,    TKM_CBC,  256, 256},
+    {"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384,        TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_SHA384,  TKM_CBC,  256, 256},
+    {"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384",         TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384,          TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AES,      TCM_SHA384,  TKM_CBC,  256, 256},
+
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+     /* Apparently we support the CAMELLIA ciphersuites in Galois/counter mode defined in RFC 6367 */
+    {"TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384",  TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384, TPV_TLSv12, TKE_ECDH,     TCA_ECDSA,  TCE_Camellia, TCM_SHA384,  TKM_GCM,  256, 256},
+    {"TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384",    TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384,   TPV_TLSv12, TKE_ECDH,     TCA_RSA,    TCE_Camellia, TCM_SHA384,  TKM_GCM,  256, 256},
+#endif
 #ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305
     /* OpenSSL 1.1.0 supports the ChaCha20-Poly1305 ciphersuites defined in RFC 7905 */
-    {"TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256",     TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305,         TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_ChaCha20, TCM_AEAD,   256, 256},
+    {"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256", TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,     TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_ChaCha20, TCM_AEAD,    TKM_NA,   256, 256},
+    {"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",   TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305,       TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_ChaCha20, TCM_AEAD,    TKM_NA,   256, 256},
 #endif
-    {"TLS_DHE_DSS_WITH_AES_256_GCM_SHA384",           TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384,        TPV_TLSv12, TKE_DH,         TCA_DSS,    TCE_AESGCM,   TCM_AEAD,   256, 256},
-    {"TLS_DHE_RSA_WITH_AES_256_GCM_SHA384",           TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384,        TPV_TLSv12, TKE_DH,         TCA_RSA,    TCE_AESGCM,   TCM_AEAD,   256, 256}
-
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8
+    /* OpenSSL 1.1.1 supports the AES-CCM Elliptic Curve Cryptography (ECC) ciphersuites defined in RFC 7251 */
+    {"TLS_ECDHE_ECDSA_WITH_AES_256_CCM",              TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM,           TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_CBC_MAC, TKM_CCM,  256, 256},
+    {"TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8",            TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8,         TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AES,      TCM_CBC_MAC, TKM_CCM,  256, 256},
+#endif
+    {"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",       TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,    TPV_TLSv12, TKE_ECDH,       TCA_ECDSA,  TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  256, 256},
+    {"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",         TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384,      TPV_TLSv12, TKE_ECDH,       TCA_RSA,    TCE_AESGCM,   TCM_AEAD,    TKM_GCM,  256, 256}
 };
 
 #define GLOBAL_NUM_CIPHERSUITES (sizeof(globalCipherSuiteList)/sizeof(DcmCipherSuiteList))
 
+/* This is the list of TLS 1.3 ciphersuites supported by OpenSSL 1.1.1 and newer.
+ *
+ * IMPORTANT: This list must be sorted from the weakest to the strongest ciphersuite.
+ *   - first sort by effective key size
+ *   - then sort by hash key algorithm  (SHA-256 < SHA-384)
+ */
+
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+static const DcmCipherSuiteList globalTLS13CipherSuiteList[] =
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256
+    {"TLS_AES_128_CCM_SHA256",                        TLS1_3_RFC_AES_128_CCM_SHA256,                   TPV_TLSv13, TKE_TLSv13,     TCA_TLSv13, TCE_AES,      TCM_SHA256,  TKM_CCM,  128, 128},
+    {"TLS_AES_128_CCM_8_SHA256",                      TLS1_3_RFC_AES_128_CCM_8_SHA256,                 TPV_TLSv13, TKE_TLSv13,     TCA_TLSv13, TCE_AES,      TCM_SHA256,  TKM_CCM,  128, 128},
+#endif
+    {"TLS_AES_128_GCM_SHA256",                        TLS1_3_RFC_AES_128_GCM_SHA256,                   TPV_TLSv13, TKE_TLSv13,     TCA_TLSv13, TCE_AES,      TCM_SHA256,  TKM_GCM,  128, 128},
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256
+    {"TLS_CHACHA20_POLY1305_SHA256",                  TLS1_3_RFC_CHACHA20_POLY1305_SHA256,             TPV_TLSv13, TKE_TLSv13,     TCA_TLSv13, TCE_ChaCha20, TCM_SHA256,  TKM_NA,   256, 256},
+#endif
+    {"TLS_AES_256_GCM_SHA384",                        TLS1_3_RFC_AES_256_GCM_SHA384,                   TPV_TLSv13, TKE_TLSv13,     TCA_TLSv13, TCE_AES,      TCM_SHA384,  TKM_GCM,  256, 256},
+};
+
+#define GLOBAL_NUM_TLS13_CIPHERSUITES (sizeof(globalCipherSuiteList)/sizeof(DcmCipherSuiteList))
+
+#endif
+
+
 const size_t DcmTLSCiphersuiteHandler::unknownCipherSuiteIndex = (size_t) -1;
 
 DcmTLSCiphersuiteHandler::DcmTLSCiphersuiteHandler()
 : ciphersuiteList()
+, tls13ciphersuiteList()
 , currentProfile(TSP_Profile_None)
 , tls13_enabled(OFTrue)
 , ciphersuiteSupported(new OFBool[GLOBAL_NUM_CIPHERSUITES])
@@ -227,6 +275,25 @@ OFCondition DcmTLSCiphersuiteHandler::addRequiredCipherSuite(const char *name)
 }
 
 
+OFCondition DcmTLSCiphersuiteHandler::addRequiredTLS13CipherSuite(const char *name)
+{
+  if (NULL == name) return EC_IllegalCall;
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  size_t idx = lookupTLS13Ciphersuite(name);
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) tls13ciphersuiteList.push_back(idx);
+  else
+  {
+     DCMTLS_FATAL("Ciphersuite '" << name << "' not supported by the OpenSSL library used to compile this application.");
+     return DCMTLS_EC_UnknownCiphersuite(name);
+  }
+  return EC_Normal;
+#else
+  DCMTLS_FATAL("TLS 1.3, and therefore, ciphersuite '" << name << "' not supported by the OpenSSL library used to compile this application.");
+  return DCMTLS_EC_UnknownCiphersuite(name);
+#endif
+}
+
+
 void DcmTLSCiphersuiteHandler::addOptional3DESCipherSuite()
 {
   size_t idx = lookupCiphersuite("TLS_RSA_WITH_3DES_EDE_CBC_SHA");
@@ -250,20 +317,27 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil
     case TSP_Profile_None:
       tls13_enabled = OFTrue;
       ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
       break;
     case TSP_Profile_Basic:
       tls13_enabled = OFFalse;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
       result = addRequiredCipherSuite("TLS_RSA_WITH_3DES_EDE_CBC_SHA");
       if (result.bad()) return result;
       break;
     case TSP_Profile_AES:
       tls13_enabled = OFFalse;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
       result = addRequiredCipherSuite("TLS_RSA_WITH_AES_128_CBC_SHA");
       if (result.bad()) return result;
       addOptional3DESCipherSuite();
       break;
     case TSP_Profile_BCP195:
       tls13_enabled = OFTrue;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
       // recommended ciphersuites as defined in the DICOM profile, plus backwards compatibility
       result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
       if (result.bad()) return result;
@@ -279,6 +353,8 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil
       break;
     case TSP_Profile_BCP195_ND:
       tls13_enabled = OFTrue;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
       // required ciphersuites as defined in the DICOM profile
       result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
       if (result.bad()) return result;
@@ -291,6 +367,8 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil
       break;
     case TSP_Profile_BCP195_Extended:
       tls13_enabled = OFFalse;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
       // required ciphersuites as defined in the DICOM profile
       result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
       if (result.bad()) return result;
@@ -305,8 +383,79 @@ OFCondition DcmTLSCiphersuiteHandler::setTLSProfile(DcmTLSSecurityProfile profil
       result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256");
       if (result.bad()) return result;
       break;
+    case TSP_Profile_BCP_195_RFC_8996:
+      tls13_enabled = OFTrue;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
+      // recommended ciphersuites as defined in RFC 9325
+      result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384");
+      if (result.bad()) return result;
+      break;
+    case TSP_Profile_BCP_195_RFC_8996_Modified:
+#ifdef DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported
+      tls13_enabled = OFTrue;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
+      // required TLS 1.0-1.2 ciphersuites as defined in the DICOM profile
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+      result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256");
+      if (result.bad()) return result;
+#endif
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_CCM");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256");
+      if (result.bad()) return result;
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
+      result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384");
+      if (result.bad()) return result;
+#endif
+      result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_CCM");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384");
+      if (result.bad()) return result;
+      result = addRequiredCipherSuite("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384");
+      if (result.bad()) return result;
+
+      // required TLS 1.3 ciphersuites as defined in the DICOM profile
+      result = addRequiredTLS13CipherSuite("TLS_AES_256_GCM_SHA384");
+      if (result.bad()) return result;
+      result = addRequiredTLS13CipherSuite("TLS_CHACHA20_POLY1305_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredTLS13CipherSuite("TLS_AES_128_GCM_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredTLS13CipherSuite("TLS_AES_128_CCM_SHA256");
+      if (result.bad()) return result;
+      result = addRequiredTLS13CipherSuite("TLS_AES_128_CCM_8_SHA256");
+      if (result.bad()) return result;
+#else
+      return DCMTLS_EC_TLSProfileNotSupported;
+#endif
+      break;
+
     case TSP_Profile_IHE_ATNA_Unencrypted:
       tls13_enabled = OFFalse;
+      ciphersuiteList.clear();
+      tls13ciphersuiteList.clear();
       result = addRequiredCipherSuite("TLS_RSA_WITH_NULL_SHA");
       if (result.bad()) return result;
       break;
@@ -321,6 +470,7 @@ void DcmTLSCiphersuiteHandler::clearTLSProfile()
   tls13_enabled = OFTrue;
   currentProfile = TSP_Profile_None;
   ciphersuiteList.clear();
+  tls13ciphersuiteList.clear();
 }
 
 OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite)
@@ -338,6 +488,8 @@ OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite)
     }
 
     size_t keySize = 0;
+    size_t effectiveSize = 0;
+    OFString suiteName;
     switch (currentProfile)
     {
       case TSP_Profile_Basic:
@@ -354,17 +506,63 @@ OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite)
           DCMTLS_FATAL("Unencrypted ciphersuite '" << suite << "' not permitted with security profile '" << lookupProfileName(currentProfile) << "'");
           return DCMTLS_EC_CiphersuiteNotAllowed;
         }
+        // static RSA should not be used
         if (TKE_RSA == getCipherSuiteKeyExchange(idx))
         {
           DCMTLS_WARN("Ciphersuite '" << suite << "' uses RSA key transport. RFC 7525 recommends that such cipher suites should not be used.");
         }
-               else
+        break;
+
+      case TSP_Profile_BCP_195_RFC_8996:
+        // make sure that we don't add a NULL ciphersuite (i.e. a ciphersuite without encryption)
+        keySize = getCipherSuiteKeySize(idx);
+        if (keySize == 0)
+        {
+          DCMTLS_FATAL("Unencrypted ciphersuite '" << suite << "' not permitted with security profile '" << lookupProfileName(currentProfile) << "'");
+          return DCMTLS_EC_CiphersuiteNotAllowed;
+        }
+        // SHA-1 MUST NOT be used. This also applies to MD5, but we don't support any MD5 ciphersuites anyway
+        if (TCM_SHA1 == getCipherSuiteMAC(idx))
+        {
+          DCMTLS_FATAL("Ciphersuite '" << suite << "' using SHA-1 MAC not permitted with security profile '" << lookupProfileName(currentProfile) << "'");
+          return DCMTLS_EC_CiphersuiteNotAllowed;
+        }
+        // print a warning if the TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite is added
+        suiteName = suite;
+        if (suiteName == "TLS_RSA_WITH_AES_128_CBC_SHA")
+        {
+          DCMTLS_WARN("RFC 9325 recommends that ciphersuite 'TLS_RSA_WITH_AES_128_CBC_SHA' should not be used.");
+        }
+        else
+        {
+          // print a warning if a static RSA ciphersuite is added
+          if (TKE_RSA == getCipherSuiteKeyExchange(idx))
+          {
+            DCMTLS_WARN("Ciphersuite '" << suite << "' uses RSA key transport. RFC 9325 recommends that such cipher suites should not be used.");
+          }
+          // print a warning if a DHE ciphersuite is added
+          if (TKE_DH == getCipherSuiteKeyExchange(idx))
+          {
+            DCMTLS_WARN("Ciphersuite '" << suite << "' uses ephemeral finite-field Diffie-Hellman key agreement. RFC 9325 recommends that such cipher suites should not be used.");
+          }
+        }
+        // print a warning if a block cipher in CBC mode is added
+        if (TKM_CBC == getCipherSuiteMode(idx))
         {
-          DCMTLS_WARN("Ciphersuite '" << suite << "' uses NO RSA key transport. RFC 7525 recommends that such cipher suites should not be used.");
+            DCMTLS_WARN("Ciphersuite '" << suite << "' uses CBC mode of operation. RFC 9325 recommends that such cipher suites should not be used, unless both sides support the encrypt_then_mac extension (we do).");
+        }
+        // print a warning if cipher with less than 128 bits of effective key length is added.
+        // Actually this should never happen because 3DES is the only cipher suite with less than 128 bits supported in DCMTK,
+        // and that one is already blocked by the test for SHA-1. Nevertheless, make sure we remain on the safe side.
+        effectiveSize = getCipherSuiteEffectiveKeySize(idx);
+        if (effectiveSize < 128)
+        {
+            DCMTLS_WARN("Ciphersuite '" << suite << "' only offers ' << effectiveSize << ' bits of effective key length. RFC 9325 recommends that cipher suites offering less than 128 bits should not be used.");
         }
         break;
 
       case TSP_Profile_BCP195_Extended:
+      case TSP_Profile_BCP_195_RFC_8996_Modified:
         DCMTLS_FATAL("Additional ciphersuites not permitted with security profile '" << lookupProfileName(currentProfile) << "'");
         return DCMTLS_EC_CiphersuiteNotAllowed;
         break;
@@ -379,7 +577,7 @@ OFCondition DcmTLSCiphersuiteHandler::addCipherSuite(const char *suite)
     return EC_Normal;
   }
   // invalid/unknown cipher suite name
-  return EC_IllegalCall;
+  return DCMTLS_EC_UnknownCiphersuite( suite ? suite : "(NULL)" );
 }
 
 // Static helper function for the qsort() call in
@@ -423,65 +621,189 @@ void DcmTLSCiphersuiteHandler::getListOfCipherSuitesForOpenSSL(OFString& cslist,
   }
 }
 
+void DcmTLSCiphersuiteHandler::getListOfTLS13CipherSuitesForOpenSSL(OFString& cslist, OFBool isServer) const
+{
+  cslist.clear();
+  const char *c = NULL;
+  OFVector<size_t> tempList = tls13ciphersuiteList;
+
+  if (isServer)
+  {
+    // When acting as a TLS server, we follow the recommendation of BCP 195
+    // to select the strongest ciphersuite offered by the client. We do this by
+    // ignoring the order of preference proposed by the client; instead we select the first
+    // matching ciphersuite from our own (server-side) list of supported ciphersuites.
+    // We sort this list with the strongest ciphersuite first. Since the global list
+    // of ciphersuites (globalCipherSuiteList) is already sorted by strength (weakest
+    // ciphersuite first), we only have to sort the ciphersuite IDs in decreasing order.
+    qsort(&tempList[0], tempList.size(), sizeof(size_t), cipherSuiteComparison);
+  }
+
+  for (OFVector<size_t>::const_iterator it = tempList.begin(); it != tempList.end(); ++it)
+  {
+    c = getOpenSSLTLS13CipherSuiteName(*it);
+    if (c)
+    {
+      if (! cslist.empty()) cslist += ":";
+      cslist += c;
+    }
+  }
+}
+
 size_t DcmTLSCiphersuiteHandler::getNumberOfCipherSuites()
 {
   return GLOBAL_NUM_CIPHERSUITES;
 }
 
+size_t DcmTLSCiphersuiteHandler::getNumberOfTLS13CipherSuites()
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  return GLOBAL_NUM_TLS13_CIPHERSUITES;
+#else
+  return 0;
+#endif
+}
+
 const char *DcmTLSCiphersuiteHandler::getTLSCipherSuiteName(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].TLSname;
   return NULL;
 }
 
+const char *DcmTLSCiphersuiteHandler::getTLS13CipherSuiteName(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].TLSname;
+#endif
+  return NULL;
+}
+
 const char *DcmTLSCiphersuiteHandler::getOpenSSLCipherSuiteName(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].openSSLName;
   return NULL;
 }
 
+const char *DcmTLSCiphersuiteHandler::getOpenSSLTLS13CipherSuiteName(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].openSSLName;
+#endif
+  return NULL;
+}
+
 DcmTLSCipherProtocolVersion DcmTLSCiphersuiteHandler::getCipherSuiteProtocolVersion(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].protocolVersion;
   return TPV_TLSv12;  // invalid index, return a (rather arbitrary) default
 }
 
+DcmTLSCipherProtocolVersion DcmTLSCiphersuiteHandler::getTLS13CipherSuiteProtocolVersion(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].protocolVersion;
+#endif
+  return TPV_TLSv12;  // invalid index, return a (rather arbitrary) default
+}
+
 DcmTLSCipherKeyExchange DcmTLSCiphersuiteHandler::getCipherSuiteKeyExchange(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].keyExchange;
   return TKE_RSA;  // invalid index, return a (rather arbitrary) default
 }
 
+DcmTLSCipherKeyExchange DcmTLSCiphersuiteHandler::getTLS13CipherSuiteKeyExchange(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].keyExchange;
+#endif
+  return TKE_RSA;  // invalid index, return a (rather arbitrary) default
+}
+
 DcmTLSCipherAuthentication DcmTLSCiphersuiteHandler::getCipherSuiteAuthentication(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].authentication;
   return TCA_RSA;  // invalid index, return a (rather arbitrary) default
 }
 
+DcmTLSCipherAuthentication DcmTLSCiphersuiteHandler::getTLS13CipherSuiteAuthentication(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].authentication;
+#endif
+  return TCA_RSA;  // invalid index, return a (rather arbitrary) default
+}
+
 DcmTLSCipherEncryption DcmTLSCiphersuiteHandler::getCipherSuiteEncryption(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].encryption;
   return TCE_None;  // invalid index, return a (rather arbitrary) default
 }
 
+DcmTLSCipherEncryption DcmTLSCiphersuiteHandler::getTLS13CipherSuiteEncryption(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].encryption;
+#endif
+  return TCE_None;  // invalid index, return a (rather arbitrary) default
+}
+
 DcmTLSCipherMAC DcmTLSCiphersuiteHandler::getCipherSuiteMAC(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].mac;
   return TCM_AEAD;
 }
 
+DcmTLSCipherMAC DcmTLSCiphersuiteHandler::getTLS13CipherSuiteMAC(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].mac;
+#endif
+  return TCM_AEAD;
+}
+
+DcmTLSCipherMode DcmTLSCiphersuiteHandler::getCipherSuiteMode(size_t idx)
+{
+  if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].mode;
+  return TKM_NA;
+}
+
+DcmTLSCipherMode DcmTLSCiphersuiteHandler::getTLS13CipherSuiteMode(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].mode;
+#endif
+  return TKM_NA;
+}
+
 size_t DcmTLSCiphersuiteHandler::getCipherSuiteKeySize(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].keySize;
   return 0;
 }
 
+size_t DcmTLSCiphersuiteHandler::getTLS13CipherSuiteKeySize(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].keySize;
+#endif
+  return 0;
+}
+
 size_t DcmTLSCiphersuiteHandler::getCipherSuiteEffectiveKeySize(size_t idx)
 {
   if (idx < GLOBAL_NUM_CIPHERSUITES) return globalCipherSuiteList[idx].effectiveKeySize;
   return 0;
 }
 
+size_t DcmTLSCiphersuiteHandler::getTLS13CipherSuiteEffectiveKeySize(size_t idx)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (idx < GLOBAL_NUM_TLS13_CIPHERSUITES) return globalTLS13CipherSuiteList[idx].effectiveKeySize;
+#endif
+  return 0;
+}
+
 size_t DcmTLSCiphersuiteHandler::lookupCiphersuite(const char *tlsCipherSuiteName)
 {
   if (tlsCipherSuiteName)
@@ -497,6 +819,24 @@ size_t DcmTLSCiphersuiteHandler::lookupCiphersuite(const char *tlsCipherSuiteNam
   return unknownCipherSuiteIndex;
 }
 
+size_t DcmTLSCiphersuiteHandler::lookupTLS13Ciphersuite(const char *tlsCipherSuiteName)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (tlsCipherSuiteName)
+  {
+    OFString aString(tlsCipherSuiteName);
+    size_t numEntries = GLOBAL_NUM_TLS13_CIPHERSUITES;
+    for (size_t i = 0; i < numEntries; i++)
+    {
+      if (aString == globalTLS13CipherSuiteList[i].TLSname) return i;
+    }
+  }
+#endif
+
+  // ciphersuite not found
+  return unknownCipherSuiteIndex;
+}
+
 size_t DcmTLSCiphersuiteHandler::lookupCiphersuiteByOpenSSLName(const char *opensslCipherSuiteName)
 {
   if (opensslCipherSuiteName)
@@ -512,6 +852,24 @@ size_t DcmTLSCiphersuiteHandler::lookupCiphersuiteByOpenSSLName(const char *open
   return unknownCipherSuiteIndex;
 }
 
+size_t DcmTLSCiphersuiteHandler::lookupTLS13CiphersuiteByOpenSSLName(const char *opensslCipherSuiteName)
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  if (opensslCipherSuiteName)
+  {
+    OFString aString(opensslCipherSuiteName);
+    size_t numEntries = GLOBAL_NUM_TLS13_CIPHERSUITES;
+    for (size_t i = 0; i < numEntries; i++)
+    {
+      if (aString == globalTLS13CipherSuiteList[i].openSSLName) return i;
+    }
+  }
+#endif
+
+  // ciphersuite not found
+  return unknownCipherSuiteIndex;
+}
+
 void DcmTLSCiphersuiteHandler::printSupportedCiphersuites(STD_NAMESPACE ostream& os) const
 {
   size_t numEntries = GLOBAL_NUM_CIPHERSUITES;
@@ -522,6 +880,18 @@ void DcmTLSCiphersuiteHandler::printSupportedCiphersuites(STD_NAMESPACE ostream&
   }
 }
 
+void DcmTLSCiphersuiteHandler::printSupportedTLS13Ciphersuites(STD_NAMESPACE ostream& os) const
+{
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+  size_t numEntries = GLOBAL_NUM_TLS13_CIPHERSUITES;
+  for (size_t i = 0; i < numEntries; i++)
+  {
+    if (ciphersuiteSupported[i])
+       os << "  " << globalTLS13CipherSuiteList[i].TLSname << OFendl;
+  }
+#endif
+}
+
 const char *DcmTLSCiphersuiteHandler::lookupProfileName(DcmTLSSecurityProfile profile)
 {
   switch (profile)
@@ -544,6 +914,12 @@ const char *DcmTLSCiphersuiteHandler::lookupProfileName(DcmTLSSecurityProfile pr
     case TSP_Profile_None:
       return "None";
       break;
+    case TSP_Profile_BCP_195_RFC_8996:
+      return "BCP 195 RFC 8996 TLS Profile";
+      break;
+    case TSP_Profile_BCP_195_RFC_8996_Modified:
+      return "Modified BCP 195 RFC 8996 TLS Profile";
+      break;
     case TSP_Profile_IHE_ATNA_Unencrypted:
       return "Authenticated unencrypted communication";
       break;
index df68b949e88c03d48d40c33fb7694569aa4bbf56..74149aab8f56630a1f7d3246af027bd3904bb820 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2017-2021, OFFIS e.V.
+ *  Copyright (C) 2017-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -52,6 +52,7 @@ makeOFConditionConst( DCMTLS_EC_OtherSSLError,                        OFM_dcmtls
 makeOFConditionConst( DCMTLS_EC_FailedToSetVerificationMode,          OFM_dcmtls, 21, OF_error, "Setting of the X.509 verification mode failed" );
 makeOFConditionConst( DCMTLS_EC_CertStoreCtxInitFailed,               OFM_dcmtls, 22, OF_error, "Certificate store context initialization failed" );
 makeOFConditionConst( DCMTLS_EC_OpenSSLIOError,                       OFM_dcmtls, 23, OF_error, "OpenSSL I/O error (SSL_ERROR_SYSCALL)" );
+makeOFConditionConst( DCMTLS_EC_TLSProfileNotSupported,               OFM_dcmtls, 24, OF_error, "DICOM TLS Secure Transport Connection Profile not supported" );
 
 // implementation of specializable error codes
 
diff --git a/dcmtls/libsrc/tlsfmacr.h b/dcmtls/libsrc/tlsfmacr.h
new file mode 100644 (file)
index 0000000..a461221
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ *
+ *  Copyright (C) 2018-2023, OFFIS e.V.
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  This software and supporting documentation were developed by
+ *
+ *    OFFIS e.V.
+ *    R&D Division Health
+ *    Escherweg 2
+ *    D-26121 Oldenburg, Germany
+ *
+ *
+ *  Module: dcmtls
+ *
+ *  Author: Marco Eichelberg
+ *
+ *  Purpose:
+ *    OpenSSL feature test macros
+ *
+ */
+
+#ifndef TLSFMAC_H
+#define TLSFMAC_H
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#ifdef WITH_OPENSSL
+
+BEGIN_EXTERN_C
+#include <openssl/ssl.h>
+#include <openssl/tls1.h>
+END_EXTERN_C
+
+/* check if we fulfil all requirements for implementing the 
+ * Modified BCP 195 RFC 8996 TLS Profile
+ */
+#if defined(HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305) \
+  && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8) \
+  && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384) \
+  && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_CHACHA20_POLY1305_SHA256) \
+  && defined(HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_128_CCM_8_SHA256)
+
+/* all feature tests except Camellia in GCM mode are successful
+ * We now check if we either have Camellia in GCM more or have been
+ * instructed to ignore this requirement
+ */
+#if defined(HAVE_OPENSSL_PROTOTYPE_TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384) \
+  || defined(DCMTK_IGNORE_BCP195M_CAMELLIA_GCM_REQUIREMENT)
+
+#define DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported
+#endif
+#endif
+
+#endif /* WITH_OPENSSL */
+#endif /* TLSFMAC_H */
index 134aae60b74ee0e471918932b0d67a6e176d1c9b..bd2413efb55608d372db7a0f0d8c55f3714def40 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2021, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -76,6 +76,12 @@ END_EXTERN_C
 #define X509_STORE_get0_param(A) (A)->param;
 #endif
 
+#ifndef HAVE_OPENSSL_PROTOTYPE_X509_STORE_CTX_GET0_CERT
+#define X509_STORE_CTX_get0_cert(ctx) ((ctx)->cert)
+#endif
+
+int DcmTLSTransportLayer::contextStoreIndex = -1;
+
 extern "C" int DcmTLSTransportLayer_certificateValidationCallback(int ok, X509_STORE_CTX *storeContext);
 
 OFLogger DCM_dcmtlsLogger = OFLog::getLogger("dcmtk.dcmtls");
@@ -85,21 +91,19 @@ OFLogger DCM_dcmtlsLogger = OFLog::getLogger("dcmtk.dcmtls");
  *  (DHE_) ciphersuites unless the user replaces the parameter set
  *  by calling DcmTLSTransportLayer::setTempDHParameters().
  *  Using a hard-coded DH parameter set is safe because the DH key exchange
- *  does not require these parameters to be secret. It is, however, still
- *  preferable to use a user-generated set of parameters.
- *
- *  Generated by calling "openssl dhparam 2048".
+ *  does not require these parameters to be secret.
+ *  We use the 2048 bit Diffie-Hellman MODP group defined in RFC 7919.
  */
 OFBool DcmTLSTransportLayer::setBuiltInDHParameters()
 {
   static char dh2048_p[] =
     "-----BEGIN DH PARAMETERS-----\n"
-    "MIIBCAKCAQEAzEaoIXpuyK2D+If94J2iSxYqi1Ot+HD7FKvszu7Bxlh8izm1nyzk\n"
-    "b0zUJfcXOaxnSsqmfGxLfPRm5+vD3aeD6mugrR1zZSemXUiq6CsONZZQ1MxStJvk\n"
-    "Ems+9qRrbj9tA+/b2dZvUCc1pZAQTkbf7+CcbZnh21jExmDhf5QFZye/y4Arvj+a\n"
-    "CZP/2Hd0veWUv2HzFRm52v0B69Y7I4BEWwGMDkvRREzc05fRAZiDftRLJGSkohLq\n"
-    "65jDLNz4ZgiCvNH5SnixzuUBlys+78XEfWYu6k0FclBEFq+9rVaqugodK/SN0BOA\n"
-    "pOEPHZJ77TwWvHEXA9ShsNjmBkqWK/tnKwIBAg==\n"
+    "MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz\n"
+    "+8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a\n"
+    "87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7\n"
+    "YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi\n"
+    "7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD\n"
+    "ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg==\n"
     "-----END DH PARAMETERS-----\n";
 
   if (transportLayerContext==NULL) return OFFalse;
@@ -129,14 +133,151 @@ OFBool DcmTLSTransportLayer::setBuiltInDHParameters()
   return OFFalse;
 }
 
-int DcmTLSTransportLayer_certificateValidationCallback(int ok, X509_STORE_CTX * /* storeContext */)
+int DcmTLSTransportLayer_certificateValidationCallback(int ok, X509_STORE_CTX *storeContext)
 {
   // this callback is called whenever OpenSSL has validated a X.509 certificate.
-  // we could for example print it:
-  // DcmTLSTransportLayer::printX509Certificate(cout, storeContext->cert);
+  // The result of OpenSSL's pre-validation is passed as parameter "ok".
+  if (ok) // prevalidation has passed, perform additional checks
+  {
+    // this call will return a pointer to the certificate in the chain
+    // that is currently being checked, starting with the root CA certificate,
+    // and working upwards from there.
+    X509 *cert = X509_STORE_CTX_get_current_cert(storeContext);
+    if (cert)
+    {
+      int rsabits = 0;
+      int ecdsabits = 0;
+      EVP_PKEY *pubkey = X509_get_pubkey(cert); // creates a copy of the public key
+      if (pubkey)
+      {
+        if (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA)
+        {
+          rsabits = EVP_PKEY_bits(pubkey); // RSA public key size, in bits
+        }
+        if (EVP_PKEY_base_id(pubkey) == EVP_PKEY_EC)
+        {
+          ecdsabits = EVP_PKEY_bits(pubkey); // ECDSA public key size, in bits
+        }
+        EVP_PKEY_free(pubkey);
+      }
+
+      // get a pointer to the SSL structure of the current connection
+      SSL *ssl = OFreinterpret_cast(SSL *, X509_STORE_CTX_get_ex_data(storeContext, SSL_get_ex_data_X509_STORE_CTX_idx()));
+      if (ssl)
+      {
+        DcmTLSTransportLayer *tlayer = OFreinterpret_cast(DcmTLSTransportLayer *, SSL_get_ex_data(ssl, DcmTLSTransportLayer::contextStoreIndex));
+        if (tlayer)
+        {
+          // check if the hash key used in the peer certificate is on our "blacklist" of weak hash key algorithms
+          const char *hash = tlayer->checkHashKeyIsTooInSecure(cert);
+          if (hash)
+          {
+            DCMTLS_ERROR("Weak certificate hash key: peer provided certificate with '" << hash << "'. Refusing TLS connection.");
+            return 0;
+          }
+
+          // check if the hash key used in the peer certificate is on our "whitelist" of strong hash key algorithms
+          hash = tlayer->checkHashKeyIsSecure(cert);
+          DcmTLSSecurityProfile profile = tlayer->getTLSProfile();
+          switch (profile)
+          {
+             case TSP_Profile_BCP_195_RFC_8996_Modified:
+               if ((rsabits > 0) && (rsabits < 2048))
+               {
+                 DCMTLS_ERROR("RSA key length too short: the DICOM TLS profile requires at least 2048 bits, but peer provided RSA certificate with "  << rsabits << " bits. Refusing TLS connection.");
+                 return 0;
+               }
+               if ((ecdsabits > 0) && (ecdsabits < 256))
+               {
+                 DCMTLS_ERROR("ECDSA key length too short: the DICOM TLS profile requires at least 256 bits, but peer provided ECDSA certificate with "  << ecdsabits << " bits. Refusing TLS connection.");
+                 return 0;
+               }
+               if (hash)
+               {
+                 DCMTLS_ERROR("Weak certificate hash key: the DICOM TLS profile requires SHA-256 (or better) for certificates, but peer provided certificate with '" << hash << "'. Refusing TLS connection.");
+                 return 0;
+               }
+               break;
+
+             case TSP_Profile_BCP_195_RFC_8996:
+               if ((rsabits > 0) && (rsabits < 2048))
+               {
+                 if (! SSL_is_server(ssl))
+                 {
+                   DCMTLS_ERROR("Server RSA key length too short: RFC 9325 requires at least 2048 bits, but server provided RSA certificate with "  << rsabits << " bits. Refusing TLS connection.");
+                   return 0;
+                 }
+               }
+               /* fallthrough */
+
+             default:
+               if ((rsabits > 0) && (rsabits < 2048))
+               {
+                 DCMTLS_WARN("RSA key length too short: RFC 9325 recommends at least 2048 bits, but peer provided RSA certificate with "  << rsabits << " bits.");
+               }
+               if ((ecdsabits > 0) && (ecdsabits < 224))
+               {
+                 DCMTLS_WARN("ECDSA key length too short: RFC 9325 recommends at least 224 bits, but peer provided ECDSA certificate with "  << ecdsabits << " bits.");
+               }
+               if (hash)
+               {
+                 DCMTLS_WARN("Weak certificate hash key: RFC 9325 recommends SHA-256 (or better, but peer provided certificate with '" << hash << "'.");
+               }
+               break;
+           }
+        }
+      }
+    }
+  }
   return ok;
 }
 
+// The 'dicom' protocol identifier for DICOM in network format
+// (string length, followed by a sequence of characters, no terminating zero,
+// as defined in https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
+
+static const unsigned char alpn_dicom_protocol[] = {
+     5, 0x64, 0x69, 0x63, 0x6f, 0x6d
+};
+
+static const unsigned char alpn_dicom_protocol_len = OFstatic_cast(unsigned char, sizeof(alpn_dicom_protocol));
+
+extern "C" int DcmTLSTransportLayer_ALPNCallback(SSL *ssl, const unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg);
+
+int DcmTLSTransportLayer_ALPNCallback(SSL * /*ssl*/, const unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void * /*arg*/ )
+{
+  // check if the list of protocols proposed by the client contains DICOM
+  unsigned char *npout = NULL;
+  if (OPENSSL_NPN_NEGOTIATED == SSL_select_next_proto(&npout, outlen, alpn_dicom_protocol, alpn_dicom_protocol_len, in, inlen))
+  {
+    // client has proposed the DICOM protocol. We accept this.
+    *out = npout;
+    return SSL_TLSEXT_ERR_OK;
+  }
+
+  // client has proposed a protocol other than DICOM. Reject this.
+  DCMTLS_ERROR("TLS ALPN negotiation failure: Client has proposed protocol(s) other than 'dicom'");
+  return SSL_TLSEXT_ERR_ALERT_FATAL;
+}
+
+extern "C" int DcmTLSTransportLayer_SNICallback(SSL *s, int *al, void *arg);
+
+int DcmTLSTransportLayer_SNICallback(SSL *s, int * /* al */, void *arg)
+{
+  const char *called_name = SSL_get_servername(s, TLSEXT_NAMETYPE_host_name);
+  if (called_name)
+  {
+    DcmTLSTransportLayer *tlayer = OFreinterpret_cast(DcmTLSTransportLayer *, arg);
+    if (! tlayer->checkServerSNI(called_name))
+    {
+      DCMTLS_ERROR("SNI failure: client requested server '" << called_name << "', my name is '" << tlayer->getServerSNI() << "'.");
+      return SSL_TLSEXT_ERR_ALERT_FATAL;
+    }
+  }
+  return SSL_TLSEXT_ERR_OK;
+}
+
+
 /* buf     : buffer to write password into
  * size    : length of buffer in bytes
  * rwflag  : nonzero if the password will be used as a new password, i.e. user should be asked to repeat the password
@@ -167,8 +308,9 @@ int DcmTLSTransportLayer_passwordCallback(char *buf, int size, int /* rwflag */,
  */
 static void computeEllipticCurveList(OFVector<int>& ecvector)
 {
-  // BCP 195: Curves of less than 192 bits SHOULD NOT be used.
-  // Actually we only enable curves with at least 256 bits in DCMTK, following NIST and BSI recommendations.
+  // RFC 9325: Curves of less than 224 bits MUST NOT be used.
+  // Actually we only enable curves with at least 256 bits in DCMTK,
+  // following NIST and BSI recommendations.
   const int eclist[] = {
     // The list of elliptic curves actually supported by OpenSSL 1.0.2
     // seems to be undocumented. See implementation of tls1_ec_nid2curve_id()
@@ -224,6 +366,9 @@ DcmTLSTransportLayer::DcmTLSTransportLayer()
 , canWriteRandseed(OFFalse)
 , privateKeyPasswd()
 , role(NET_ACCEPTORREQUESTOR)
+, clientSNI(NULL)
+, serverSNI(NULL)
+, certificateTypeIsDSA(OFFalse)
 {
 }
 
@@ -237,6 +382,9 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const
 , canWriteRandseed(OFFalse)
 , privateKeyPasswd()
 , role(networkRole)
+, clientSNI(NULL)
+, serverSNI(NULL)
+, certificateTypeIsDSA(OFFalse)
 {
    if (initOpenSSL) initializeOpenSSL();
    if (randFile) seedPRNG(randFile);
@@ -338,7 +486,6 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const
 
 #if HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET1_SIGALGS
     // The TLS 1.2 Signature Algorithms extension is only supported in OpenSSL 1.0.2 and newer.
-
     if (networkRole != NET_ACCEPTOR)
     {
       // BCP 195: Clients SHOULD indicate to servers that they request SHA-256,
@@ -346,6 +493,9 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const
       // We implement this by requesting SHA-256 OR BETTER, i.e. we also indicate
       // support for SHA-384 and SHA-512.
 
+      // RFC 9325 has strengthened this requirement to a MUST condition:
+      // Clients MUST indicate to servers that they request SHA-256...
+
       const int slist[] = {NID_sha256, EVP_PKEY_RSA,     NID_sha384, EVP_PKEY_RSA,     NID_sha512, EVP_PKEY_RSA,
 #ifdef HAVE_OPENSSL_PROTOTYPE_EVP_PKEY_RSA_PSS
                            // Connections between a client and a server that both use OpenSSL 1.1.1
@@ -381,6 +531,26 @@ DcmTLSTransportLayer::DcmTLSTransportLayer(T_ASC_NetworkRole networkRole, const
     }
 #endif /* HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET1_CURVES */
 
+    if (networkRole != NET_ACCEPTOR)
+    {
+      if (0 != SSL_CTX_set_alpn_protos(transportLayerContext, alpn_dicom_protocol, alpn_dicom_protocol_len))
+      {
+        DCMTLS_ERROR("unable to configure the TLS Application-Layer Protocol Negotiation extension.");
+      }
+    }
+
+    if (networkRole != NET_REQUESTOR)
+    {
+      SSL_CTX_set_alpn_select_cb(transportLayerContext, DcmTLSTransportLayer_ALPNCallback, NULL);
+    }
+
+    // activate the callback for incoming connections using SNI
+    if (networkRole != NET_REQUESTOR)
+    {
+      SSL_CTX_set_tlsext_servername_callback(transportLayerContext, DcmTLSTransportLayer_SNICallback);
+      SSL_CTX_set_tlsext_servername_arg(transportLayerContext, this);
+    }
+
     if (NET_REQUESTOR != networkRole)
     {
       // BCP 195: Servers MUST prefer TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 over weaker cipher suites whenever it is proposed, even if it is not the first proposal.
@@ -442,6 +612,26 @@ OFBool DcmTLSTransportLayer::operator!() const
   return !transportLayerContext;
 }
 
+OFBool DcmTLSTransportLayer::checkServerSNI(const char *s) const
+{
+  if (s && serverSNI)
+  {
+    OFString requestedSNI(s);
+
+    // if a server name is set and a server name is requested, only succeed if these two match
+    return (requestedSNI == serverSNI);
+  }
+
+  // if either name is NULL, we succeed
+  return OFTrue;
+}
+
+const char *DcmTLSTransportLayer::getServerSNI() const
+{
+  if (serverSNI) return serverSNI;
+  return "";
+}
+
 OFBool DcmTLSTransportLayer::setTempDHParameters(const char *filename)
 {
   if ((filename==NULL)||(transportLayerContext==NULL)) return OFFalse;
@@ -458,7 +648,7 @@ OFBool DcmTLSTransportLayer::setTempDHParameters(const char *filename)
       // DH key lengths of at least 2048 bits are RECOMMENDED.
       if (EVP_PKEY_bits(dh) < 2048)
       {
-          DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 7525 recommends at least 2048 bits, but the key in file '"
+          DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 9325 recommends at least 2048 bits, but the key in file '"
           << filename << "' is only " << EVP_PKEY_bits(dh) << " bits.");
           if (ciphersuites.getTLSProfile() == TSP_Profile_BCP195_Extended)
           {
@@ -482,7 +672,7 @@ OFBool DcmTLSTransportLayer::setTempDHParameters(const char *filename)
       // DH key lengths of at least 2048 bits are RECOMMENDED.
       if (DH_bits(dh) < 2048)
       {
-          DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 7525 recommends at least 2048 bits, but the key in file '"
+          DCMTLS_WARN("Key length of Diffie-Hellman parameter file too short: RFC 9325 recommends at least 2048 bits, but the key in file '"
           << filename << "' is only " << DH_bits(dh) << " bits.");
           if (ciphersuites.getTLSProfile() == TSP_Profile_BCP195_Extended)
           {
@@ -550,7 +740,10 @@ void DcmTLSTransportLayer::setCertificateVerification(DcmCertificateVerification
 OFCondition DcmTLSTransportLayer::activateCipherSuites()
 {
   OFString cslist;
+  OFString tls13cslist;
   ciphersuites.getListOfCipherSuitesForOpenSSL(cslist, (role != NET_REQUESTOR));
+  ciphersuites.getListOfTLS13CipherSuitesForOpenSSL(tls13cslist, (role != NET_REQUESTOR));
+
   if (transportLayerContext)
   {
     if (!SSL_CTX_set_cipher_list(transportLayerContext, cslist.c_str()))
@@ -558,13 +751,30 @@ OFCondition DcmTLSTransportLayer::activateCipherSuites()
       return convertOpenSSLError(ERR_get_error(), OFTrue);
     }
 
+#ifdef HAVE_OPENSSL_PROTOTYPE_TLS1_3_RFC_AES_256_GCM_SHA384
+    // we have TLS 1.3 support, so let's set the list of TLS 1.3 ciphersuites if we have any.
+    // If that list is empty, the default list remains active
+    if (tls13cslist.length() > 0)
+    {
+      if (!SSL_CTX_set_ciphersuites(transportLayerContext, tls13cslist.c_str()))
+      {
+        return convertOpenSSLError(ERR_get_error(), OFTrue);
+      }
+    }
+#endif
+
     SSL_CTX_set_options(transportLayerContext, ciphersuites.getTLSOptions());
 
 #ifdef HAVE_OPENSSL_PROTOTYPE_SSL_CTX_SET_MAX_PROTO_VERSION
     // when compiling with OpenSSL 1.1.1 or newer, set the maximum supported
-    // TLS protocol version to TLS 1.2 if required (i.e. for the historic
-    // security profiles, which would otherwise show unexpected behaviour).
-    if (! ciphersuites.isTLS13Enabled())
+    // TLS protocol version to TLS 1.2 if required.
+    // This applies to some historic TLS profiles, which would otherwise
+    // show unexpected behaviour, but also in the case that a DSA certificate
+    // is in use, since TLS 1.3 does not support DSA certificates.
+    // If we don't disable TLS 1.3 in this case, we may receive a TLS
+    // negotiation failure with a "no suitable signature algorithm" error
+    // under certain circumstances (e.g. if SNI is enabled).
+    if ((! ciphersuites.isTLS13Enabled()) || certificateTypeIsDSA)
     {
       SSL_CTX_set_max_proto_version(transportLayerContext, TLS1_2_VERSION);
     }
@@ -603,28 +813,130 @@ OFCondition DcmTLSTransportLayer::setPrivateKeyFile(const char *fileName, DcmKey
   return EC_Normal;
 }
 
-OFCondition DcmTLSTransportLayer::setCertificateFile(const char *fileName, DcmKeyFileFormat fileType)
+
+OFCondition DcmTLSTransportLayer::setCertificateFile(const char *fileName, DcmKeyFileFormat fileType, DcmTLSSecurityProfile profile)
 {
   if (transportLayerContext)
   {
     // we load the first certificate from the file and check the key length
-    // and hash key against RFC 7525 recommendations.
+    // and hash key against RFC 9325 recommendations.
     int result = 0;
+    int rsabits = 0;
+    int ecdsabits = 0;
+    int certificateType = 0;
+    OFBool enforceRSALengthServer = OFFalse;
+    OFBool enforceRSALengthClient = OFFalse;
+    OFBool enforceECDSALength = OFFalse;
+    OFBool enforceHashLength = OFFalse;
+    OFBool refuseDSAcert = OFFalse;
+
+    switch (profile)
+    {
+      case TSP_Profile_BCP_195_RFC_8996_Modified:
+        enforceRSALengthClient = OFTrue; // refuse certificate if we are a client and the RSA key is shorter than 2048 bits
+        enforceECDSALength = OFTrue; // refuse certificate if the ECDSA key is shorter than 256 bits
+        enforceHashLength = OFTrue; // refuse certificate if hash is not SHA-256 or better
+        /* fallthrough */
+      case TSP_Profile_BCP_195_RFC_8996:
+        enforceRSALengthServer = OFTrue; // refuse certificate if we are a server and the RSA key is shorter than 2048 bits
+        refuseDSAcert = OFTrue; // refuse DSA certificates because they prevent the use of TLS 1.3
+        break;
+      default:
+        break;
+    }
+
     X509 *certificate = loadCertificateFile(fileName, fileType);
     if (certificate)
     {
-      // Check if the certificate is RSA, and if so, if the public key is >= 2048 bits
-      int bits = getRSAKeySize(certificate);
-      if ((bits > 0) && (bits < 2048))
+      // reset certificate type flag
+      certificateTypeIsDSA = OFFalse;
+
+      EVP_PKEY *pubkey = X509_get_pubkey(certificate); // creates a copy of the public key
+      if (pubkey)
       {
-        DCMTLS_WARN("Key length of RSA public key too short: RFC 7525 recommends at least 2048 bits for RSA keys, but the key in certificate file '"
-          << fileName << "' is only " << bits << " bits.");
+        certificateType = EVP_PKEY_base_id(pubkey);
+        if (certificateType == EVP_PKEY_RSA)
+        {
+          rsabits = EVP_PKEY_bits(pubkey); // RSA public key size, in bits
+        }
+        if (certificateType == EVP_PKEY_EC)
+        {
+          ecdsabits = EVP_PKEY_bits(pubkey); // ECDSA public key size, in bits
+        }
+        EVP_PKEY_free(pubkey);
+      }
+
+      if ((rsabits > 0) && (rsabits < 2048))
+      {
+        if (enforceRSALengthServer && (role != NET_REQUESTOR))
+        {
+          DCMTLS_FATAL("Key length of RSA public key too short: RFC 9325 requires at least 2048 bits for server RSA keys, but the key in certificate file '"
+            << fileName << "' is only " << rsabits << " bits.");
+          return DCMTLS_EC_FailedToLoadCertificate(fileName);
+        }
+        if (enforceRSALengthClient)
+        {
+          DCMTLS_FATAL("Key length of RSA public key too short: TLS profile requires at least 2048 bits for RSA keys, but the key in certificate file '"
+            << fileName << "' is only " << rsabits << " bits.");
+          return DCMTLS_EC_FailedToLoadCertificate(fileName);
+        }
+        DCMTLS_WARN("Key length of RSA public key too short: RFC 9325 recommends at least 2048 bits for RSA keys, but the key in certificate file '"
+          << fileName << "' is only " << rsabits << " bits.");
+      }
+
+      if ((ecdsabits > 0) && (ecdsabits < 256))
+      {
+
+        if (enforceECDSALength)
+        {
+          DCMTLS_FATAL("Key length of ECDSA public key too short: TLS profile requires at least 256 bits for ECDSA keys, but the key in certificate file '"
+            << fileName << "' is only " << ecdsabits << " bits.");
+          return DCMTLS_EC_FailedToLoadCertificate(fileName);
+        }
+        if (ecdsabits < 224)
+        {
+          DCMTLS_WARN("Key length of ECDSA public key too short: RFC 9325 recommends at least 224 bits for ECDSA keys, but the key in certificate file '"
+            << fileName << "' is only " << ecdsabits << " bits.");
+        }
+      }
+
+      if (certificateType == EVP_PKEY_DSA)
+      {
+        if (refuseDSAcert)
+        {
+          DCMTLS_FATAL("DSA certificate '" << fileName << "' not permitted in the selected TLS profile because it prevents the use of TLS 1.3.");
+          return DCMTLS_EC_FailedToLoadCertificate(fileName);
+        }
+        else
+        {
+          DCMTLS_WARN("Use of DSA certificate not recommended because it prevents the use of TLS 1.3, which does not support this certificate type.");
+          certificateTypeIsDSA = OFTrue;
+        }
+      }
+
+      // check if the hash key used in the peer certificate is on our "blacklist" of weak hash key algorithms
+      const char *hash = checkHashKeyIsTooInSecure(certificate);
+      if (hash)
+      {
+        DCMTLS_ERROR("Weak certificate hash key: certificate file '" << fileName << "' uses '" << hash << "'.");
+        return DCMTLS_EC_FailedToLoadCertificate(fileName);
       }
-      const char *hash = checkRSAHashKeyIsSHA2(certificate);
+
+      // check if the hash key used in the peer certificate is on our "whitelist" of strong hash key algorithms
+      hash = checkHashKeyIsSecure(certificate);
       if (hash)
       {
-        DCMTLS_WARN("Certificate hash key not SHA-256: RFC 7525 recommends the use of SHA-256 for RSA certificates, but certificate file '"
-          << fileName << "' uses '" << hash << "'.");
+        if (enforceHashLength)
+        {
+          DCMTLS_FATAL("Weak certificate hash key: TLS profile requires SHA-256 (or better) for certificates, but certificate file '"
+            << fileName << "' uses '" << hash << "'.");
+          return DCMTLS_EC_FailedToLoadCertificate(fileName);
+        }
+        else
+        {
+          DCMTLS_WARN("Possibly weak certificate hash key: RFC 9325 recommends the use of SHA-256 (or better) for certificates, but certificate file '"
+            << fileName << "' uses '" << hash << "'.");
+        }
       }
 
       if (fileType == DCF_Filetype_PEM)
@@ -647,7 +959,7 @@ OFCondition DcmTLSTransportLayer::setCertificateFile(const char *fileName, DcmKe
     {
       return convertOpenSSLError(ERR_get_error(), OFTrue);
     }
-  } else return EC_IllegalCall;
+  } else return DCMTLS_EC_FailedToLoadCertificate(fileName);
   return EC_Normal;
 }
 
@@ -773,6 +1085,19 @@ DcmTransportConnection *DcmTLSTransportLayer::createConnection(DcmNativeSocketTy
           DCMTLS_ERROR("Conversion of 64-bit socket type to int in OpenSSL API causes loss of information.");
         }
         SSL_set_fd(newConnection, s);
+
+        if (clientSNI && (role != NET_ACCEPTOR))
+        {
+          if (0 == SSL_set_tlsext_host_name(newConnection, clientSNI))
+          {
+            DCMTLS_WARN("Unable to set the server name for the TLS SNI extension, ignoring.");
+          }
+        }
+
+        // store a pointer to this DcmTLSTransportLayer instance in the SSL object,
+        // for use by the certificate verification callback
+        SSL_set_ex_data(newConnection, contextStoreIndex, this);
+
         return new DcmTLSConnection(openSocket, newConnection);
       }
     }
@@ -895,6 +1220,11 @@ OFCondition DcmTLSTransportLayer::setTLSProfile(DcmTLSSecurityProfile profile)
   return ciphersuites.setTLSProfile(profile);
 }
 
+DcmTLSSecurityProfile DcmTLSTransportLayer::getTLSProfile() const
+{
+  return ciphersuites.getTLSProfile();
+}
+
 void DcmTLSTransportLayer::clearTLSProfile()
 {
   ciphersuites.clearTLSProfile();
@@ -938,37 +1268,104 @@ void DcmTLSTransportLayer::getListOfCipherSuitesForOpenSSL(OFString& cslist) con
 
 int DcmTLSTransportLayer::getRSAKeySize(X509 *certificate)
 {
+  int result = 0; // default for non-RSA keys
   if (certificate)
   {
     EVP_PKEY *pubkey = X509_get_pubkey(certificate); // creates a copy of the public key
-    if (pubkey && (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA))
+    if (pubkey)
     {
-      int certPubKeyBits = EVP_PKEY_bits(pubkey); // RSA public key size, in bits
+      if (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA)
+      {
+        result = EVP_PKEY_bits(pubkey); // RSA public key size, in bits
+      }
       EVP_PKEY_free(pubkey);
-      return certPubKeyBits;
     }
   }
-  return 0; // certificate not present or not RSA
+  return result;
 }
 
-const char *DcmTLSTransportLayer::checkRSAHashKeyIsSHA2(X509 *certificate)
+
+const char *DcmTLSTransportLayer::checkHashKeyIsTooInSecure(X509 *certificate)
+{
+  if (certificate)
+  {
+      // this method implements a blacklist of hash key algorithms
+      // that we never accept, because they are too insecure
+      int nid = X509_get_signature_nid(certificate);
+      switch (nid)
+      {
+        case NID_md2WithRSAEncryption: // MD2
+        case NID_md2:
+          return "MD2";
+        case NID_md4WithRSAEncryption: // MD4
+        case NID_md4:
+          return "MD4";
+        case NID_md5WithRSAEncryption: // MD5
+        case NID_md5:
+        case NID_md5WithRSA:
+          return "MD5";
+        default:
+         break;
+      }
+  }
+  return NULL;
+}
+
+
+const char *DcmTLSTransportLayer::checkHashKeyIsSecure(X509 *certificate)
 {
   if (certificate)
   {
-    EVP_PKEY *pubkey = X509_get_pubkey(certificate); // creates copy of public key
-    if (pubkey && (EVP_PKEY_base_id(pubkey) == EVP_PKEY_RSA))
-    {
       int nid = X509_get_signature_nid(certificate);
-      EVP_PKEY_free(pubkey);
       switch (nid)
       {
+          // RSA with SHA-2
           case NID_sha256WithRSAEncryption:
           case NID_sha384WithRSAEncryption:
           case NID_sha512WithRSAEncryption:
-          return NULL; // hash key uses SHA256 (or better)
+#ifdef HAVE_OPENSSL_PROTOTYPE_NID_SHA512_256WITHRSAENCRYPTION
+          // we have support for SHA-512_256
+          case NID_sha512_256WithRSAEncryption:
+#endif
+
+#ifdef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256
+          // We have SHA-3 support. Accept RSA with SHA-3
+          case NID_RSA_SHA3_256:
+          case NID_RSA_SHA3_384:
+          case NID_RSA_SHA3_512:
+#endif
+
+          // ECDSA with SHA-2
+          case NID_ecdsa_with_SHA256:
+          case NID_ecdsa_with_SHA384:
+          case NID_ecdsa_with_SHA512:
+
+#ifdef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256
+          // We have SHA-3 support. Accept ECDSA with SHA-3
+          case NID_ecdsa_with_SHA3_256:
+          case NID_ecdsa_with_SHA3_384:
+          case NID_ecdsa_with_SHA3_512:
+#endif
+
+          // DSA with SHA-2
+          case NID_dsa_with_SHA256:
+
+#ifdef HAVE_OPENSSL_PROTOTYPE_NID_DSA_WITH_SHA512
+          // We have support for DSA with SHA-384 and SHA-512
+          case NID_dsa_with_SHA384:
+          case NID_dsa_with_SHA512:
+#endif
+
+#ifdef HAVE_OPENSSL_PROTOTYPE_NID_ECDSA_WITH_SHA3_256
+          // We have SHA-3 support. Accept DSA with SHA-3
+          case NID_dsa_with_SHA3_256:
+          case NID_dsa_with_SHA3_384:
+          case NID_dsa_with_SHA3_512:
+#endif
+
+          return NULL; // hash key is on the "whitelist"
         default:
-          return OBJ_nid2sn(nid); // hash key does not follow BCP 195 recommendation to use SHA256
-      }
+          return OBJ_nid2sn(nid); // hash key is not on our "whitelist", return the name
     }
   }
   return NULL; // default: everything is OK
@@ -1184,11 +1581,14 @@ OFCondition DcmTLSTransportLayer::convertOpenSSLX509VerificationError(int errorC
 
 void DcmTLSTransportLayer::initializeOpenSSL()
 {
-  // the call to SSL_library_init was not needed in OpenSSL versions prior to 0.9.8,
-  // but the API has been available at least since 0.9.5.
+  // initialize OpenSSL library
   SSL_library_init();
   SSL_load_error_strings();
   OpenSSL_add_all_algorithms();
+
+  // generate a globally unique index that can be used to store application
+  // specific data in the SSL structure. This only needs to be done once.
+  contextStoreIndex = SSL_get_ex_new_index(0, &contextStoreIndex, NULL, NULL, NULL);
 }
 
 const char *DcmTLSTransportLayer::getOpenSSLVersionName()
index 3d4965a3ab896c33cb658e6621a3fb0f89ea4ebc..f5c43a3c4a0930571e266e9cdd620f1d0542fe49 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2017-2021, OFFIS e.V.
+ *  Copyright (C) 2017-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -25,8 +25,9 @@
 #include "dcmtk/ofstd/ofconapp.h"
 #include "dcmtk/dcmtls/tlscond.h"
 #include "dcmtk/dcmnet/assoc.h"       /* for ASC_setTransportLayer() */
+#include "tlsfmacr.h"                 /* for OpenSSL feature macros */
 
-void DcmTLSOptions::printLibraryVersion()
+void DcmTLSOptionsBase::printLibraryVersion()
 {
 #ifdef WITH_OPENSSL
     COUT << "- " << DcmTLSTransportLayer::getOpenSSLVersionName() << OFendl;
@@ -34,33 +35,133 @@ void DcmTLSOptions::printLibraryVersion()
 }
 
 #ifdef WITH_OPENSSL
-DcmTLSOptions::DcmTLSOptions(T_ASC_NetworkRole networkRole)
-: opt_keyFileFormat( DCF_Filetype_PEM )
-, opt_doAuthenticate( OFFalse )
-, opt_privateKeyFile( OFnullptr )
-, opt_certificateFile( OFnullptr )
-, opt_passwd( OFnullptr )
-, opt_tlsProfile( TSP_Profile_BCP195_ND ) // default: BCP 195 ND profile
-, opt_readSeedFile( OFnullptr )
-, opt_writeSeedFile( OFnullptr )
-, opt_certVerification( DCV_requireCertificate )
-, opt_dhparam( OFnullptr )
-, opt_secureConnection( OFFalse ) // default: no secure connection
-, opt_networkRole( networkRole )
-, tLayer( OFnullptr )
+DcmTLSOptionsBase::DcmTLSOptionsBase(T_ASC_NetworkRole networkRole)
+: opt_keyFileFormat(DCF_Filetype_PEM)
+, opt_doAuthenticate(OFFalse)
+, opt_privateKeyFile(OFnullptr)
+, opt_certificateFile(OFnullptr)
+, opt_passwd(OFnullptr)
+, opt_tlsProfile(TSP_Profile_BCP_195_RFC_8996) // default: BCP 195 RFC 8996 TLS Profile
+, opt_readSeedFile(OFnullptr)
+, opt_writeSeedFile(OFnullptr)
+, opt_certVerification(DCV_requireCertificate)
+, opt_dhparam(OFnullptr)
+, opt_secureConnection(OFFalse) // default: no secure connection
+, opt_networkRole(networkRole)
+, opt_clientSNI(OFnullptr)
+, opt_serverSNI(OFnullptr)
+, opt_crlMode(TCR_noCRL)
+, tLayer(OFnullptr)
 #else
-DcmTLSOptions::DcmTLSOptions(T_ASC_NetworkRole /* networkRole */)
+DcmTLSOptionsBase::DcmTLSOptionsBase(T_ASC_NetworkRole /* networkRole */)
 #endif
 {
 }
 
-DcmTLSOptions::~DcmTLSOptions()
+DcmTLSOptionsBase::~DcmTLSOptionsBase()
 {
 #ifdef WITH_OPENSSL
   delete tLayer;
 #endif
 }
 
+#ifdef WITH_OPENSSL
+OFBool DcmTLSOptionsBase::listOfCiphersRequested(OFCommandLine& cmd)
+{
+  if (cmd.findOption("--list-ciphers")) return OFTrue;
+  return OFFalse;
+}
+#else
+OFBool DcmTLSOptionsBase::listOfCiphersRequested(OFCommandLine& /* cmd */)
+{
+  return OFFalse;
+}
+#endif
+
+#ifdef WITH_OPENSSL
+void DcmTLSOptionsBase::printSupportedCiphersuites(OFConsoleApplication& app, STD_NAMESPACE ostream& os)
+{
+  DcmTLSCiphersuiteHandler csh;
+  app.printHeader(OFTrue /*print host identifier*/);
+  os << OFendl << "Supported TLS ciphersuites are:" << OFendl;
+  csh.printSupportedCiphersuites(os);
+}
+#else
+void DcmTLSOptionsBase::printSupportedCiphersuites(OFConsoleApplication& /* app */, STD_NAMESPACE ostream& /* os */)
+{
+}
+#endif
+
+OFBool DcmTLSOptionsBase::secureConnectionRequested() const
+{
+#ifdef WITH_OPENSSL
+  return opt_secureConnection;
+#else
+  return OFFalse;
+#endif
+}
+
+DcmTransportLayer *DcmTLSOptionsBase::getTransportLayer()
+{
+#ifdef WITH_OPENSSL
+  return tLayer;
+#else
+  return NULL;
+#endif
+}
+
+OFCondition DcmTLSOptionsBase::writeRandomSeed()
+{
+#ifdef WITH_OPENSSL
+    if (opt_writeSeedFile && tLayer)
+    {
+        if (tLayer->canWriteRandomSeed())
+        {
+            if (!tLayer->writeRandomSeed(opt_writeSeedFile))
+                return DCMTLS_EC_FailedToWriteRandomSeedFile(opt_writeSeedFile);
+        }
+        else return DCMTLS_EC_FailedToWriteRandomSeedFile(opt_writeSeedFile);
+    }
+#endif
+    return EC_Normal;
+}
+
+#ifdef WITH_OPENSSL
+OFCondition DcmTLSOptionsBase::verifyClientCertificate(const char *fileName)
+{
+  if (tLayer) return tLayer->verifyClientCertificate(fileName, opt_keyFileFormat);
+  return EC_IllegalCall;
+}
+#else
+OFCondition DcmTLSOptionsBase::verifyClientCertificate(const char * /* fileName */)
+{
+  return EC_IllegalCall;
+}
+#endif
+
+#ifdef WITH_OPENSSL
+OFCondition DcmTLSOptionsBase::isRootCertificate(const char *fileName)
+{
+  return DcmTLSTransportLayer::isRootCertificate(fileName, opt_keyFileFormat);
+}
+#else
+OFCondition DcmTLSOptionsBase::isRootCertificate(const char * /* fileName */)
+{
+  return EC_IllegalCall;
+}
+#endif
+
+// ----------------------------------------------------------------------------
+
+DcmTLSOptions::DcmTLSOptions(T_ASC_NetworkRole networkRole)
+: DcmTLSOptionsBase(networkRole)
+{
+}
+
+DcmTLSOptions::~DcmTLSOptions()
+{
+}
+
 #ifdef WITH_OPENSSL
 void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd)
 {
@@ -73,8 +174,8 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd)
                                                        "use authenticated secure TLS connection");
       if (opt_networkRole == NET_REQUESTOR)
       {
-         // this command line options only makes sense for association requesters (TLS clients)
-         cmd.addOption("--anonymous-tls",   "+tla",    "use secure TLS connection without certificate");
+        // this command line option only makes sense for association requesters (TLS clients)
+        cmd.addOption("--anonymous-tls",    "+tla",    "use secure TLS connection without certificate");
       }
     cmd.addSubGroup("private key password (only with --enable-tls):");
       cmd.addOption("--std-passwd",         "+ps",     "prompt user to type password on stdin (default)");
@@ -94,9 +195,13 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd)
       cmd.addOption("--enable-crl-vfy",     "+crv",    "enable leaf CRL verification");
       cmd.addOption("--enable-crl-all",     "+cra",    "enable full chain CRL verification");
     cmd.addSubGroup("security profile:");
-      cmd.addOption("--profile-bcp195-nd",  "+py",     "Non-downgrading BCP 195 TLS Profile (default)");
-      cmd.addOption("--profile-bcp195",     "+px",     "BCP 195 TLS Profile");
-      cmd.addOption("--profile-bcp195-ex",  "+pz",     "Extended BCP 195 TLS Profile");
+      cmd.addOption("--profile-8996",       "+pg",     "BCP 195 RFC 8996 TLS Profile (default)");
+#ifdef DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported
+      cmd.addOption("--profile-8996-mod",   "+pm",     "Modified BCP 195 RFC 8996 TLS Profile");
+#endif
+      cmd.addOption("--profile-bcp195-nd",  "+py",     "Non-downgrading BCP 195 TLS Profile (retired)");
+      cmd.addOption("--profile-bcp195",     "+px",     "BCP 195 TLS Profile (retired)");
+      cmd.addOption("--profile-bcp195-ex",  "+pz",     "Extended BCP 195 TLS Profile (retired)");
       if (csh.cipher3DESsupported())
       {
         cmd.addOption("--profile-basic",    "+pb",     "Basic TLS Secure Transport Connection Profile\n(retired)");
@@ -113,11 +218,24 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd)
                                                        "add ciphersuite to list of negotiated suites\n(not with --profile-bcp195-ex)");
       if (opt_networkRole != NET_REQUESTOR)
       {
-        // this command line options only makes sense for association acceptors (TLS servers)
+        // this command line option only makes sense for association acceptors (TLS servers)
         // or systems that accept and request associations
         cmd.addOption("--dhparam",          "+dp",  1, "[f]ilename: string",
                                                        "read DH parameters for DH/DSS ciphersuites");
       }
+    cmd.addSubGroup("server name indication:");
+      cmd.addOption("--no-sni",                        "do not use SNI (default)");
+      if (opt_networkRole != NET_ACCEPTOR)
+      {
+        cmd.addOption("--request-sni",              1, "[s]erver name: string",
+                                                       "request server name s");
+      }
+      if (opt_networkRole != NET_REQUESTOR)
+      {
+        cmd.addOption("--expect-sni",               1, "[s]erver name: string",
+                                                       "expect requests for server name s");
+      }
+
     cmd.addSubGroup("pseudo random generator:");
       cmd.addOption("--seed",               "+rs",  1, "[f]ilename: string",
                                                        "seed random generator with contents of f");
@@ -128,7 +246,7 @@ void DcmTLSOptions::addTLSCommandlineOptions(OFCommandLine& cmd)
       cmd.addOption("--require-peer-cert",  "-rc",     "verify peer certificate, fail if absent (default)");
       if (opt_networkRole != NET_REQUESTOR)
       {
-        // this command line options only makes sense for association acceptors (TLS servers)
+        // this command line option only makes sense for association acceptors (TLS servers)
         // or systems that accept and request associations
         cmd.addOption("--verify-peer-cert", "-vc",     "verify peer certificate if present");
       }
@@ -149,90 +267,127 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd
         "--enable-tls or --anonymous-tls" : "--enable-tls");
 
     cmd.beginOptionBlock();
-    if( cmd.findOption( "--disable-tls" ) )
+    if (cmd.findOption("--disable-tls"))
+    {
         opt_secureConnection = OFFalse;
-    if( cmd.findOption( "--enable-tls" ) )
+        opt_doAuthenticate = OFFalse;
+    }
+    if (cmd.findOption("--enable-tls"))
     {
         opt_secureConnection = OFTrue;
         opt_doAuthenticate = OFTrue;
-        app.checkValue( cmd.getValue( opt_privateKeyFile ) );
-        app.checkValue( cmd.getValue( opt_certificateFile ) );
+        app.checkValue(cmd.getValue(opt_privateKeyFile));
+        app.checkValue(cmd.getValue(opt_certificateFile));
     }
     if (opt_networkRole == NET_REQUESTOR)
     {
-        if( cmd.findOption( "--anonymous-tls" ) ) opt_secureConnection = OFTrue;
+        if (cmd.findOption("--anonymous-tls"))
+        {
+            opt_secureConnection = OFTrue;
+            opt_doAuthenticate = OFFalse;
+        }
     }
     cmd.endOptionBlock();
 
     cmd.beginOptionBlock();
-    if( cmd.findOption( "--std-passwd" ) )
+    if (cmd.findOption("--std-passwd"))
     {
         app.checkDependence("--std-passwd", "--enable-tls", opt_doAuthenticate);
         opt_passwd = OFnullptr;
     }
-    if( cmd.findOption("--use-passwd") )
+    if (cmd.findOption("--use-passwd"))
     {
-        app.checkDependence( "--use-passwd", "--enable-tls", opt_doAuthenticate );
-        app.checkValue( cmd.getValue( opt_passwd ) );
+        app.checkDependence("--use-passwd", "--enable-tls", opt_doAuthenticate);
+        app.checkValue(cmd.getValue(opt_passwd));
     }
-    if( cmd.findOption( "--null-passwd" ) )
+    if (cmd.findOption("--null-passwd"))
     {
-        app.checkDependence( "--null-passwd", "--enable-tls", opt_doAuthenticate );
+        app.checkDependence("--null-passwd", "--enable-tls", opt_doAuthenticate);
         opt_passwd = "";
     }
     cmd.endOptionBlock();
 
     cmd.beginOptionBlock();
-    if( cmd.findOption( "--pem-keys" ) )
+    if (cmd.findOption("--pem-keys"))
     {
         app.checkDependence("--pem-keys", tlsopts, opt_secureConnection);
         opt_keyFileFormat = DCF_Filetype_PEM;
     }
-    if( cmd.findOption( "--der-keys" ) )
+    if (cmd.findOption("--der-keys"))
     {
         app.checkDependence("--der-keys", tlsopts, opt_secureConnection);
         opt_keyFileFormat = DCF_Filetype_ASN1;
     }
     cmd.endOptionBlock();
 
-    if( (opt_networkRole != NET_REQUESTOR) && cmd.findOption( "--dhparam" ) )
+    cmd.beginOptionBlock();
+    if (cmd.findOption("--enable-crl-vfy"))
+    {
+        app.checkDependence("--enable-crl-vfy", tlsopts, opt_secureConnection);
+        opt_crlMode = TCR_checkLeafCRL;
+    }
+    if (cmd.findOption("--enable-crl-all"))
+    {
+        app.checkDependence("--enable-crl-all", tlsopts, opt_secureConnection);
+        opt_crlMode = TCR_checkAllCRL;
+    }
+    cmd.endOptionBlock();
+
+    if ((opt_networkRole != NET_REQUESTOR) && cmd.findOption("--dhparam"))
     {
         app.checkDependence("--dhparam", tlsopts, opt_secureConnection);
-        app.checkValue( cmd.getValue( opt_dhparam ) );
+        app.checkValue(cmd.getValue(opt_dhparam));
     }
-    if( cmd.findOption( "--seed" ) )
+
+    if ((opt_networkRole != NET_ACCEPTOR) && cmd.findOption("--request-sni"))
+    {
+        app.checkValue(cmd.getValue(opt_clientSNI));
+    }
+    if ((opt_networkRole != NET_REQUESTOR) && cmd.findOption("--expect-sni"))
+    {
+        app.checkValue(cmd.getValue(opt_serverSNI));
+    }
+    if (cmd.findOption("--no-sni"))
+    {
+        app.checkConflict("--no-sni", "--request-sni", (opt_clientSNI != NULL));
+        app.checkConflict("--no-sni", "--expect-sni", (opt_serverSNI != NULL));
+        opt_clientSNI = OFnullptr;
+        opt_serverSNI = OFnullptr;
+    }
+
+    if (cmd.findOption("--seed"))
     {
         app.checkDependence("--seed", tlsopts, opt_secureConnection);
-        app.checkValue( cmd.getValue( opt_readSeedFile ) );
+        app.checkValue(cmd.getValue(opt_readSeedFile));
     }
 
     cmd.beginOptionBlock();
-    if( cmd.findOption( "--write-seed" ) )
+    if (cmd.findOption("--write-seed"))
     {
         app.checkDependence("--write-seed", tlsopts, opt_secureConnection);
-        app.checkDependence( "--write-seed", "--seed", opt_readSeedFile != OFnullptr );
+        app.checkDependence("--write-seed", "--seed", opt_readSeedFile != OFnullptr);
         opt_writeSeedFile = opt_readSeedFile;
     }
-    if( cmd.findOption( "--write-seed-file" ) )
+    if (cmd.findOption("--write-seed-file"))
     {
         app.checkDependence("--write-seed-file", tlsopts, opt_secureConnection);
-        app.checkDependence( "--write-seed-file", "--seed", opt_readSeedFile != OFnullptr );
-        app.checkValue( cmd.getValue( opt_writeSeedFile ) );
+        app.checkDependence("--write-seed-file", "--seed", opt_readSeedFile != OFnullptr);
+        app.checkValue(cmd.getValue(opt_writeSeedFile));
     }
     cmd.endOptionBlock();
 
     cmd.beginOptionBlock();
-    if( cmd.findOption( "--require-peer-cert" ) )
+    if (cmd.findOption("--require-peer-cert"))
     {
         app.checkDependence("--require-peer-cert", tlsopts, opt_secureConnection);
         opt_certVerification = DCV_requireCertificate;
     }
-    if( cmd.findOption( "--ignore-peer-cert" ) )
+    if (cmd.findOption("--ignore-peer-cert"))
     {
         app.checkDependence("--ignore-peer-cert", tlsopts, opt_secureConnection);
         opt_certVerification = DCV_ignoreCertificate;
     }
-    if ( (opt_networkRole != NET_REQUESTOR) && cmd.findOption( "--verify-peer-cert" ) )
+    if ((opt_networkRole != NET_REQUESTOR) && cmd.findOption("--verify-peer-cert"))
     {
         app.checkDependence("--verify-peer-cert", tlsopts, opt_secureConnection);
         opt_certVerification = DCV_checkCertificate;
@@ -240,6 +395,18 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd
     cmd.endOptionBlock();
 
     cmd.beginOptionBlock();
+    if (cmd.findOption("--profile-8996"))
+    {
+        app.checkDependence("--profile-8996", tlsopts, opt_secureConnection);
+        opt_tlsProfile = TSP_Profile_BCP_195_RFC_8996;
+    }
+#ifdef DCMTK_Modified_BCP195_RFC8996_TLS_Profile_Supported
+    if (cmd.findOption("--profile-8996-mod"))
+    {
+        app.checkDependence("--profile-8996-mod", tlsopts, opt_secureConnection);
+        opt_tlsProfile = TSP_Profile_BCP_195_RFC_8996_Modified;
+    }
+#endif
     if (cmd.findOption("--profile-bcp195"))
     {
         app.checkDependence("--profile-bcp195", tlsopts, opt_secureConnection);
@@ -257,11 +424,11 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd
     }
     if (csh.cipher3DESsupported())
     {
-      if (cmd.findOption("--profile-basic"))
-      {
-          app.checkDependence("--profile-basic", tlsopts, opt_secureConnection);
-          opt_tlsProfile = TSP_Profile_Basic;
-      }
+        if (cmd.findOption("--profile-basic"))
+        {
+            app.checkDependence("--profile-basic", tlsopts, opt_secureConnection);
+            opt_tlsProfile = TSP_Profile_Basic;
+        }
     }
     if (cmd.findOption("--profile-aes"))
     {
@@ -270,37 +437,27 @@ void DcmTLSOptions::parseArguments(OFConsoleApplication& app, OFCommandLine& cmd
     }
     if (csh.cipherNULLsupported())
     {
-      if (cmd.findOption("--profile-null"))
-      {
-          app.checkDependence("--profile-null", tlsopts, opt_secureConnection);
-          opt_tlsProfile = TSP_Profile_IHE_ATNA_Unencrypted;
-      }
+        if (cmd.findOption("--profile-null"))
+        {
+            app.checkDependence("--profile-null", tlsopts, opt_secureConnection);
+            opt_tlsProfile = TSP_Profile_IHE_ATNA_Unencrypted;
+        }
     }
     cmd.endOptionBlock();
 
     // check the other TLS specific options that will only be evaluated
     // later in DcmTLSOptions::createTransportLayer().
-    if (cmd.findOption("--add-cert-file", 0, OFCommandLine::FOM_First))
-      app.checkDependence("--add-cert-file", tlsopts, opt_secureConnection);
-    if (cmd.findOption("--add-cert-dir", 0, OFCommandLine::FOM_First))
-      app.checkDependence("--add-cert-dir", tlsopts, opt_secureConnection);
-    if (cmd.findOption("--add-crl-file", 0, OFCommandLine::FOM_First))
-      app.checkDependence("--add-crl-file", tlsopts, opt_secureConnection);
-
-    cmd.beginOptionBlock();
-    if (cmd.findOption("--enable-crl-vfy", 0, OFCommandLine::FOM_First))
-      app.checkDependence("--enable-crl-vfy", tlsopts, opt_secureConnection);
-    if (cmd.findOption("--enable-crl-all", 0, OFCommandLine::FOM_First))
+    if (cmd.findOption("--add-cert-file"))
+        app.checkDependence("--add-cert-file", tlsopts, opt_secureConnection);
+    if (cmd.findOption("--add-cert-dir"))
+        app.checkDependence("--add-cert-dir", tlsopts, opt_secureConnection);
+    if (cmd.findOption("--add-crl-file"))
+        app.checkDependence("--add-crl-file", tlsopts, opt_secureConnection);
+
+    if (cmd.findOption("--cipher"))
     {
-      app.checkDependence("--enable-crl-all", tlsopts, opt_secureConnection);
-      app.checkConflict("--enable-crl-all", "--enable-crl-vfy", cmd.findOption("--enable-crl-vfy", 0, OFCommandLine::FOM_First));
-    }
-    cmd.endOptionBlock();
-
-    if (cmd.findOption("--cipher", 0, OFCommandLine::FOM_First))
-    {
-      app.checkDependence("--cipher", tlsopts, opt_secureConnection);
-      app.checkConflict("--cipher", "--profile-bcp195-ex", (opt_tlsProfile == TSP_Profile_BCP195_Extended));
+        app.checkDependence("--cipher", tlsopts, opt_secureConnection);
+        app.checkConflict("--cipher", "--profile-bcp195-ex", (opt_tlsProfile == TSP_Profile_BCP195_Extended));
     }
 }
 #else
@@ -316,7 +473,8 @@ OFCondition DcmTLSOptions::createTransportLayer(
       OFConsoleApplication& app,
       OFCommandLine& cmd)
 {
-    DcmTLSCRLVerification crlmode = TCR_noCRL;
+    // use mode that was passed via command line options
+    DcmTLSCRLVerification crlmode = opt_crlMode;
 
     if (opt_secureConnection)
     {
@@ -356,17 +514,18 @@ OFCondition DcmTLSOptions::createTransportLayer(
         do
         {
           app.checkValue(cmd.getValue(current));
-          if (tLayer->addCertificateRevocationList(current, opt_keyFileFormat).bad())
+          if (tLayer->addCertificateRevocationList(current, opt_keyFileFormat).good())
           {
-              DCMTLS_WARN("unable to load CRL file '" << current << "', ignoring");
+            // enable default CRL verification mode if file was loaded successfully
+            if (crlmode == TCR_noCRL)
+              crlmode = TCR_checkLeafCRL;
+          } else {
+            DCMTLS_WARN("unable to load CRL file '" << current << "', ignoring");
           }
-          crlmode = TCR_checkLeafCRL;
         } while (cmd.findOption("--add-crl-file", 0, OFCommandLine::FOM_Next));
       }
 
       // set CRL verification mode
-      if (cmd.findOption( "--enable-crl-vfy" )) crlmode = TCR_checkLeafCRL;
-      if (cmd.findOption( "--enable-crl-all" )) crlmode = TCR_checkAllCRL;
       tLayer->setCRLverification(crlmode);
 
       OFCondition cond;
@@ -379,15 +538,15 @@ OFCondition DcmTLSOptions::createTransportLayer(
         cond = tLayer->setPrivateKeyFile(opt_privateKeyFile, opt_keyFileFormat);
 
         // replace the low-level error message with an easier to understand one
-        if (cond.bad()) return DCMTLS_EC_FailedToLoadPrivateKey( opt_privateKeyFile );
+        if (cond.bad()) return DCMTLS_EC_FailedToLoadPrivateKey(opt_privateKeyFile);
 
-        cond = tLayer->setCertificateFile(opt_certificateFile, opt_keyFileFormat);
+        cond = tLayer->setCertificateFile(opt_certificateFile, opt_keyFileFormat, opt_tlsProfile);
 
         // replace the low-level error message with an easier to understand one
-        if (cond.bad()) DCMTLS_EC_FailedToLoadCertificate( opt_certificateFile );
+        if (cond.bad()) return DCMTLS_EC_FailedToLoadCertificate(opt_certificateFile);
 
         if (! tLayer->checkPrivateKeyMatchesCertificate())
-           return DCMTLS_EC_MismatchedPrivateKeyAndCertificate( opt_privateKeyFile, opt_certificateFile );
+           return DCMTLS_EC_MismatchedPrivateKeyAndCertificate(opt_privateKeyFile, opt_certificateFile);
       }
 
       // set TLS profile
@@ -409,10 +568,14 @@ OFCondition DcmTLSOptions::createTransportLayer(
       cond = tLayer->activateCipherSuites();
       if (cond.bad()) return cond;
 
-      // Loading of DH parameters should happen after the call to setTLSProfile()
+      // set SNI names
+      tLayer->setClientSNI(opt_clientSNI);
+      tLayer->setServerSNI(opt_serverSNI);
+
+      // loading of DH parameters should happen after the call to setTLSProfile()
       // because otherwise we cannot check profile specific restrictions
       if (opt_dhparam && ! (tLayer->setTempDHParameters(opt_dhparam)))
-         DCMTLS_WARN("unable to load temporary DH parameter file '" << opt_dhparam << "', ignoring");
+          DCMTLS_WARN("unable to load temporary DH parameter file '" << opt_dhparam << "', ignoring");
 
       tLayer->setCertificateVerification(opt_certVerification);
 
@@ -440,89 +603,3 @@ OFCondition DcmTLSOptions::createTransportLayer(
     return EC_Normal;
 }
 #endif
-
-#ifdef WITH_OPENSSL
-OFBool DcmTLSOptions::listOfCiphersRequested(OFCommandLine& cmd)
-{
-  if (cmd.findOption("--list-ciphers")) return OFTrue;
-  return OFFalse;
-}
-#else
-OFBool DcmTLSOptions::listOfCiphersRequested(OFCommandLine& /* cmd */)
-{
-  return OFFalse;
-}
-#endif
-
-#ifdef WITH_OPENSSL
-void DcmTLSOptions::printSupportedCiphersuites(OFConsoleApplication& app, STD_NAMESPACE ostream& os)
-{
-  DcmTLSCiphersuiteHandler csh;
-  app.printHeader(OFTrue /*print host identifier*/);
-  os << OFendl << "Supported TLS ciphersuites are:" << OFendl;
-  csh.printSupportedCiphersuites(os);
-}
-#else
-void DcmTLSOptions::printSupportedCiphersuites(OFConsoleApplication& /* app */, STD_NAMESPACE ostream& /* os */)
-{
-}
-#endif
-
-OFBool DcmTLSOptions::secureConnectionRequested() const
-{
-#ifdef WITH_OPENSSL
-  return opt_secureConnection;
-#else
-  return OFFalse;
-#endif
-}
-
-DcmTransportLayer *DcmTLSOptions::getTransportLayer()
-{
-#ifdef WITH_OPENSSL
-  return tLayer;
-#else
-  return NULL;
-#endif
-}
-
-OFCondition DcmTLSOptions::writeRandomSeed()
-{
-#ifdef WITH_OPENSSL
-    if( opt_writeSeedFile && tLayer)
-    {
-        if( tLayer->canWriteRandomSeed() )
-        {
-            if( ! tLayer->writeRandomSeed( opt_writeSeedFile ) )
-                return DCMTLS_EC_FailedToWriteRandomSeedFile( opt_writeSeedFile );
-        }
-        else return DCMTLS_EC_FailedToWriteRandomSeedFile( opt_writeSeedFile );
-    }
-#endif
-    return EC_Normal;
-}
-
-#ifdef WITH_OPENSSL
-OFCondition DcmTLSOptions::verifyClientCertificate(const char *fileName)
-{
-  if (tLayer) return tLayer->verifyClientCertificate(fileName, opt_keyFileFormat);
-  return EC_IllegalCall;
-}
-#else
-OFCondition DcmTLSOptions::verifyClientCertificate(const char * /* fileName */)
-{
-  return EC_IllegalCall;
-}
-#endif
-
-#ifdef WITH_OPENSSL
-OFCondition DcmTLSOptions::isRootCertificate(const char *fileName)
-{
-  return DcmTLSTransportLayer::isRootCertificate(fileName, opt_keyFileFormat);
-}
-#else
-OFCondition DcmTLSOptions::isRootCertificate(const char * /* fileName */)
-{
-  return EC_IllegalCall;
-}
-#endif
index 08ab4607a33f81d8186859caeb95eee65907259a..a9aff68f2bfb7c33211dc16459fa2e044f2b4cd7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2022, OFFIS e.V.
+ *  Copyright (C) 2010-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -125,7 +125,8 @@ OFCondition DcmTLSSCU::initNetwork()
       DCMTLS_ERROR("Unable to create TLS transport layer for SCP: Unable to load private TLS key from file " << m_privateKeyFile);
     }
     // Set file that contains host certificate
-    if (cond.good()) cond = m_tLayer->setCertificateFile(m_certificateFile.c_str(), m_certKeyFileFormat);
+    // Ensure that the certificate fulfils the requirements for the default TLS profile
+    if (cond.good()) cond = m_tLayer->setCertificateFile(m_certificateFile.c_str(), m_certKeyFileFormat, TSP_Profile_BCP_195_RFC_8996);
     if (cond.bad())
     {
       DCMTLS_ERROR("Unable to load SCP certificate from file " << m_certificateFile);
index c095b9c71f13f02f862263c1fcb7399f10d02a66..752cd36ce07a2878420bbbebe0d35537feef8219 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1998-2021, OFFIS e.V.
+ *  Copyright (C) 1998-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -324,9 +324,8 @@ OFString& DcmTLSConnection::dumpConnectionParameters(OFString& str)
 void DcmTLSConnection::logTLSConnection()
 {
   OFString s;
-  dumpConnectionParameters(s);
   DCMTLS_DEBUG(
-    "================== BEGIN TLS CONNECTION DETAILS =================\n" << s <<
+    "================== BEGIN TLS CONNECTION DETAILS =================\n" << dumpConnectionParameters(s) <<
     "\n=================== END TLS CONNECTION DETAILS ==================");
 }
 
index d895da7af77418b8dc53add845a4b69fe5af9d55..119c6a1a0e9c3ac5c6914325728810d12b00848e 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2019-2021, OFFIS e.V.
+ *  Copyright (C) 2019-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -315,7 +315,7 @@ OFTEST_FLAGS(dcmtls_scp_tls, EF_None)
     scpTlsLayer.setPrivateKeyPasswd(PRIVATE_KEY_PWD);
     result = scpTlsLayer.setPrivateKeyFile(PRIVATE_KEY_FILENAME, DCF_Filetype_PEM);
     OFCHECK(result.good());
-    result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM);
+    result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM, TSP_Profile_BCP_195_RFC_8996);
     OFCHECK(result.good());
     OFCHECK(scpTlsLayer.checkPrivateKeyMatchesCertificate());
     scpTlsLayer.setCertificateVerification(DCV_ignoreCertificate);
@@ -397,7 +397,7 @@ OFTEST_FLAGS(dcmtls_scp_pool_tls, EF_None)
     scpTlsLayer.setPrivateKeyPasswd(PRIVATE_KEY_PWD);
     result = scpTlsLayer.setPrivateKeyFile(PRIVATE_KEY_FILENAME, DCF_Filetype_PEM);
     OFCHECK(result.good());
-    result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM);
+    result = scpTlsLayer.setCertificateFile(PUBLIC_SELFSIGNED_CERT_FILENAME, DCF_Filetype_PEM, TSP_Profile_BCP_195_RFC_8996);
     OFCHECK(result.good());
     OFCHECK(scpTlsLayer.checkPrivateKeyMatchesCertificate());
     scpTlsLayer.setCertificateVerification(DCV_ignoreCertificate);
index 393d57e798f3b18e7a92ca0d1ef9f3be1c43f5ac..aef243a692920fce1a0ce714c02b0b2826b2cbde 100644 (file)
@@ -252,6 +252,7 @@ automatically deleted by \b wlmscpfs.
 If request files are enabled, \b wlmscpfs must automatically create file names
 within the given directory.  By default, the format is \<timestamp\>.dump where
 \<timestamp\> is in the format YYYYMMDDhhmmssffffff where:
+
 - YYYY is the current year
 - MM is the current month
 - DD is the current day
@@ -357,6 +358,7 @@ As return keys the following attributes are currently supported by \b wlmscpfs:
 (0008,0050) AccessionNumber
 (0008,0080) InstitutionName
 (0008,0081) InstitutionAddress
+(0008,1040) InstitutionalDepartmentName
 (0008,0090) ReferringPhysicianName
 (0008,1080) AdmittingDiagnosesDescription
 (0008,1110) ReferencedStudySequence
@@ -513,6 +515,6 @@ It is an error if no data dictionary can be loaded.
 
 \section wlmscpfs_copyright COPYRIGHT
 
-Copyright (C) 1996-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2023 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
index e0af446fd9246cd89f755163b4eec38879aef4d0..4a076bcb34cf14aa030e5664ccb16717cf28de9f 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2022, OFFIS e.V.
+ *  Copyright (C) 1996-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -216,6 +216,7 @@ class DCMTK_DCMWLM_EXPORT WlmDataSource
        *    DCM_AdditionalPatientHistory                          (0010,21b0)  LT  O  3  (from the Patient Medical Module)
        *    DCM_LastMenstrualDate                                 (0010,21d0)  DA  O  3  (from the Patient Medical Module)
        *    DCM_InstitutionAddress                                (0008,0081)  ST  O  3  (from the Visit Identification Module)
+       *    DCM_InstitutionalDepartmentName                       (0008,1040)  LO  O  3  (from the Visit Identification Module)
        *    DCM_OtherPatientNames                                 (0010,1001)  PN  O  3  (from the Patient Identification Module)
        *    DCM_PatientAddress                                    (0010,1040)  LO  O  3  (from the Patient Demographic Module)
        *    DCM_MilitaryRank                                      (0010,1080)  LO  O  3  (from the Patient Demographic Module)
index 1bcc137ce90cf1ab5ad0b8b34e0357f86f832dcf..635af2fb69609882a0ce9eb0602508355b942b26 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2019, OFFIS e.V.
+ *  Copyright (C) 1996-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -470,7 +470,7 @@ void WlmDataSource::ExpandEmptySequenceInSearchMask( DcmElement *&element )
 
     // depending on what kind of supported sequence attribute
     // was passed, we have to insert different attributes
-    DcmTagKey key = element->getTag().getXTag();
+    const DcmTagKey key(element->getTag());
     if( key == DCM_ScheduledProcedureStepSequence )
     {
       newElement = new DcmApplicationEntity( DcmTag( DCM_ScheduledStationAETitle ) );      if( item->insert( newElement ) != EC_Normal ) delete newElement;
@@ -960,11 +960,11 @@ OFBool WlmDataSource::IsSupportedMatchingKeyAttribute( DcmElement *element, DcmS
   DcmTagKey elementKey, supSequenceElementKey;
 
   // determine the current element's tag
-  elementKey = element->getTag().getXTag();
+  elementKey = element->getTag();
 
   // determine the sequence element's tag, if there is one
   if( supSequenceElement != NULL )
-    supSequenceElementKey = supSequenceElement->getTag().getXTag();
+    supSequenceElementKey = supSequenceElement->getTag();
 
   // initialize result variable
   OFBool isSupportedMatchingKeyAttribute = OFFalse;
@@ -1076,6 +1076,7 @@ OFBool WlmDataSource::IsSupportedReturnKeyAttribute( DcmElement *element, DcmSeq
 //                   DCM_AdditionalPatientHistory                          (0010,21b0)  LT  O  3  (from the Patient Medical Module)
 //                   DCM_LastMenstrualDate                                 (0010,21d0)  DA  O  3  (from the Patient Medical Module)
 //                   DCM_InstitutionAddress                                (0008,0081)  ST  O  3  (from the Visit Identification Module)
+//                   DCM_InstitutionalDepartmentName                       (0008,1040)  LO  O  3  (from the Visit Identification Module)
 //                   DCM_OtherPatientNames                                 (0010,1001)  PN  O  3  (from the Patient Identification Module)
 //                   DCM_PatientAddress                                    (0010,1040)  LO  O  3  (from the Patient Demographic Module)
 //                   DCM_MilitaryRank                                      (0010,1080)  LO  O  3  (from the Patient Demographic Module)
@@ -1111,11 +1112,11 @@ OFBool WlmDataSource::IsSupportedReturnKeyAttribute( DcmElement *element, DcmSeq
   DcmTagKey elementKey, supSequenceElementKey;
 
   // determine the current element's tag
-  elementKey = element->getTag().getXTag();
+  elementKey = element->getTag();
 
   // determine the sequence element's tag, if there is one
   if( supSequenceElement != NULL )
-    supSequenceElementKey = supSequenceElement->getTag().getXTag();
+    supSequenceElementKey = supSequenceElement->getTag();
 
   // initialize result variable
   OFBool isSupportedReturnKeyAttribute = OFFalse;
@@ -1199,6 +1200,7 @@ OFBool WlmDataSource::IsSupportedReturnKeyAttribute( DcmElement *element, DcmSeq
         elementKey == DCM_AdditionalPatientHistory                          ||
         elementKey == DCM_LastMenstrualDate                                 ||
         elementKey == DCM_InstitutionAddress                                ||
+        elementKey == DCM_InstitutionalDepartmentName                       ||
         elementKey == DCM_OtherPatientNames                                 ||
         elementKey == DCM_PatientAddress                                    ||
         elementKey == DCM_MilitaryRank                                      ||
index dd0639d9105cb3408bc755a3818e62998390e05c..d821bb79c00f0fefc0e7d0fa923b82e2b0f79ecb 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2021, OFFIS e.V.
+ *  Copyright (C) 1996-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -479,7 +479,7 @@ void WlmDataSourceFileSystem::HandleNonSequenceElementInResultDataset( DcmElemen
   OFCondition cond;
 
   // determine the current elements tag.
-  DcmTagKey tag( element->getTag().getXTag() );
+  const DcmTagKey tag( element->getTag() );
 
   // check if the current element is the "Specific Character Set" (0008,0005) attribute;
   // we do not want to deal with this attribute here.
@@ -547,7 +547,7 @@ void WlmDataSourceFileSystem::HandleSequenceElementInResultDataset( DcmElement *
     // add all information from the matching record in the data source to this sequence
 
     // determine the current sequence elements tag.
-    DcmTagKey sequenceTag( sequenceOfItemsElement->getTag().getXTag() );
+    const DcmTagKey sequenceTag( sequenceOfItemsElement->getTag() );
 
     // determine how many items this sequence has in the matching record in the data source
     numOfItemsInResultSequence = fileSystemInteractionManager.GetNumberOfSequenceItemsForMatchingRecord( sequenceTag, superiorSequenceArray, numOfSuperiorSequences, idx );
index cc58ab62604c4ea5c32e26e9037c33f007a8a566..27519c6d64ad2ab57ebeef5651648d1c131f386c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2022, OFFIS e.V.
+ *  Copyright (C) 1996-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -436,13 +436,13 @@ OFBool WlmFileSystemInteractionManager::DatasetIsComplete( DcmDataset *dataset )
 //                   > ScheduledProcedureStepStartTime    (0040,0003)        1
 //                   > Modality                           (0008,0060)        1
 //                   > ScheduledProcedureStepDescription  (0040,0007)        1C (The ScheduledProcedureStepDescription (0040,0007) or the ScheduledProtocolCodeSequence (0040,0008) or both shall be supported by the SCP; we actually support both, so we have to check if at least one of the two attributes contains valid information.)
-//                   > ScheduledProtocolCodeSequence      (0040,0008)        1C (see abobve)
+//                   > ScheduledProtocolCodeSequence      (0040,0008)        1C (see above)
 //                   > > CodeValue                        (0008,0100)        1
 //                   > > CodingSchemeDesignator           (0008,0102)        1
 //                   > ScheduledProcedureStepID           (0040,0009)        1
 //                  RequestedProcedureID                  (0040,1001)        1
 //                  RequestedProcedureDescription         (0032,1060)        1C (The RequestedProcedureDescription (0032,1060) or the RequestedProcedureCodeSequence (0032,1064) or both shall be supported by the SCP; we actually support both, so we have to check if at least one of the two attributes contains valid information.)
-//                  RequestedProcedureCodeSequence        (0032,1064)        1C (see abobve)
+//                  RequestedProcedureCodeSequence        (0032,1064)        1C (see above)
 //                   > > CodeValue                        (0008,0100)        1
 //                   > > CodingSchemeDesignator           (0008,0102)        1
 //                  StudyInstanceUID                      (0020,000D)        1
index 090031f85a92eddb8ae0a02a6ec73c8d1e75f7db..0a536e29642a370ace34aafeaf14694038e7b91a 100644 (file)
@@ -64,11 +64,11 @@ association negotiation profile from configuration file:
 
 application entity title:
 
-  -aet  --aetitle  [a]etitle: string
-          set my AE title (default: DCMRECV)
-
   -uca  --use-called-aetitle
-          always respond with called AE title
+          always respond with called AE title (default)
+
+  -aet  --aetitle  [a]etitle: string
+          set my AE title
 
 other network options:
 
@@ -387,4 +387,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmsend\fP(1), \fBstorescu\fP(1), \fBstorescp\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2013-2022 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2013-2023 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
index bb74f34aeeafcd31fe34158197ec0fbe8205f782..59c513a8d7ed51e3013a230cab7021ccb91dc647 100644 (file)
@@ -16,15 +16,15 @@ mkcsmapper [-d] [-m | -p] [-o outfile] [infile]
 
 The \b mkcsmapper utility generates binary conversion data from plain text
 conversion tables for the oficonv library. The conversion data has three
-components: The conversion mapping between specific character encodings,
-a directory of available mapping files, and a pivot file, 
-which contains the possible source and destination 
-encoding pairs or the set of mappings to use for a compound encoding.
+components: The conversion mapping between specific character encodings, a
+directory of available mapping files, and a pivot file, which contains the
+possible source and destination encoding pairs or the set of mappings to use
+for a compound encoding.
 
 \section mkcsmapper_parameters PARAMETERS
 
 \verbatim
-infile   input file (from oficonv/datasrc/csmapper) to be converted
+infile  input file (from oficonv/datasrc/csmapper) to be converted
 \endverbatim
 
 \section mkcsmapper_options OPTIONS
@@ -43,7 +43,7 @@ infile   input file (from oficonv/datasrc/csmapper) to be converted
 
 \section mkcsmapper_exit_status EXIT STATUS
 
-The mkcsmapper utility exits 0 on success, and >0 if an error occurs.
+The \b mkcsmapper utility exits 0 on success, and >0 if an error occurs.
 
 \section mkcsmapper_see_also SEE ALSO
 
@@ -51,6 +51,7 @@ The mkcsmapper utility exits 0 on success, and >0 if an error occurs.
 
 \section mkcsmapper_copyright COPYRIGHT
 
-This man page is derived from the FreeBSD mkcsmapper man page, Copyright (C) 2009 Gabor Kovesdan <gabor@FreeBSD.org>
+This man page is derived from the FreeBSD mkcsmapper man page,
+Copyright (C) 2009 Gabor Kovesdan <gabor@FreeBSD.org>
 
 */
index b749226e6088db7defa6139540231efa380df47a..7ac36b60bd4b49af9c81be63d74ab01330219545 100644 (file)
@@ -20,7 +20,7 @@ important characteristics, such as the decoder module to use.
 \section mkesdb_parameters PARAMETERS
 
 \verbatim
-infile   input file (from oficonv/datasrc/esdb) to be converted
+infile  input file (from oficonv/datasrc/esdb) to be converted
 \endverbatim
 
 \section mkesdb_options OPTIONS
@@ -29,7 +29,7 @@ infile   input file (from oficonv/datasrc/esdb) to be converted
 \verbatim
   -d    debug mode, print debug information
 
-  -m    process directory catalog or alias file, 
+  -m    process directory catalog or alias file,
         instead of an encoding description
 
   -o    [f]ilename: string
@@ -38,7 +38,7 @@ infile   input file (from oficonv/datasrc/esdb) to be converted
 
 \section mkesdb_exit_status EXIT STATUS
 
-The mkesdb utility exits 0 on success, and >0 if an error occurs.
+The \b mkesdb utility exits 0 on success, and >0 if an error occurs.
 
 \section mkesdb_see_also SEE ALSO
 
@@ -46,6 +46,7 @@ The mkesdb utility exits 0 on success, and >0 if an error occurs.
 
 \section mkesdb_copyright COPYRIGHT
 
-This man page is derived from the FreeBSD mkesdb man page, Copyright (C) 2009 Gabor Kovesdan <gabor@FreeBSD.org>
+This man page is derived from the FreeBSD mkesdb man page,
+Copyright (C) 2009 Gabor Kovesdan <gabor@FreeBSD.org>
 
 */
index 330549db79690ca3e411ec1b02dcb32a98f00464..ee87945652cd8e38ea433462963d4c8f33656424 100644 (file)
@@ -94,9 +94,9 @@ DCMTK_OFICONV_EXPORT iconv_t OFiconv_open(const char *dstname, const char *srcna
  *
  *   If the string pointed to by *src contains a character which is valid
  *   under the source codeset but can not be converted to the destination
- *   codeset, the character is replaced by an “invalid character” which
- *   depends on the destination codeset, e.g., ‘?’, and the conversion is
- *   continued. iconv() returns the number of such “invalid conversions”.
+ *   codeset, the character is replaced by an "invalid character" which
+ *   depends on the destination codeset, e.g., '?', and the conversion is
+ *   continued. iconv() returns the number of such "invalid conversions".
  *
  *   @param cd conversion descriptor returned by OFiconv_open()
  *   @param src address of pointer to first byte in source buffer
index 27db88dc0ce2f21c0cc56f7793c5126f3445f468..4bf175338a9413470b4d52ba252e7bdc13a23a7b 100644 (file)
@@ -361,7 +361,11 @@ _citrus_HZ_wcrtomb_priv(_HZEncodingInfo * ei,
         ch = (wc >> (len * 8)) & 0xFF;
         if (range->start > ch || range->end < ch)
             goto ilseq;
-        psenc->ch[psenc->chlen++] = (char) (ch | bit);
+        if (psenc->chlen < ROWCOL_MAX) {
+            psenc->ch[psenc->chlen++] = (char) (ch | bit);
+        } else {
+            return (E2BIG);
+        }
     }
     memcpy(s, psenc->ch, psenc->chlen);
     *nresult = psenc->chlen;
index e4b410a03c906cad39150fc6572daf88fa3bce22..cd1b300b24253e6dbc5e9b6a704118c737948677 100644 (file)
@@ -210,8 +210,12 @@ _citrus_JISX0208_mbrtowc_priv(_JISX0208EncodingInfo *ei, _citrus_wc_t *pwc, char
     while (psenc->chlen < c) {
         if (n < 1)
             goto restart;
-        psenc->ch[psenc->chlen] = *s0++;
-        psenc->chlen++;
+        if (psenc->chlen < 3) {
+            psenc->ch[psenc->chlen] = *s0++;
+            psenc->chlen++;
+        } else {
+            return (E2BIG);
+        }
         n--;
     }
     *s = s0;
index 9fe03f7f40bfc5c224953ed1e32ff05357331b5e..a741093f4e3cff09723c8028b0b56c3ca018e1a4 100644 (file)
 #include "dcmtk/oficonv/queue.h"
 #endif
 
+/* FreeBSD defines TAILQ_FOREACH_SAFE in <sys/queue.h>, but not all systems do */
+#ifndef TAILQ_FOREACH_SAFE
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar)          \
+    for ((var) = TAILQ_FIRST((head));               \
+        (var) && ((tvar) = TAILQ_NEXT((var), field), 1);        \
+        (var) = (tvar))
+#endif
+
 #ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
@@ -201,9 +209,9 @@ mnemonic_append_child(mnemonic_t *m, const char *s,
 static void
 mnemonic_destroy(mnemonic_t *m)
 {
-    mnemonic_t *m0;
+    mnemonic_t *m0, *n;
 
-    TAILQ_FOREACH(m0, &m->child, entry)
+    TAILQ_FOREACH_SAFE(m0, &m->child, entry, n)
         mnemonic_destroy(m0);
     free(m);
 }
diff --git a/ofstd/include/dcmtk/ofstd/diag/arrybnds.def b/ofstd/include/dcmtk/ofstd/diag/arrybnds.def
new file mode 100644 (file)
index 0000000..bc8134a
--- /dev/null
@@ -0,0 +1,3 @@
+#if ( defined(__GNUC__) && (__GNUC__ >= 7 ) )
+#pragma GCC diagnostic ignored "-Warray-bounds"
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/restrict.def b/ofstd/include/dcmtk/ofstd/diag/restrict.def
new file mode 100644 (file)
index 0000000..48f8382
--- /dev/null
@@ -0,0 +1,3 @@
+#if ( defined(__GNUC__) && (__GNUC__ >= 7 ) )
+#pragma GCC diagnostic ignored "-Wrestrict"
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/stringop.def b/ofstd/include/dcmtk/ofstd/diag/stringop.def
new file mode 100644 (file)
index 0000000..3b81be1
--- /dev/null
@@ -0,0 +1,3 @@
+#if ( defined(__GNUC__) && (__GNUC__ >= 7 ) )
+#pragma GCC diagnostic ignored "-Wstringop-overflow"
+#endif
diff --git a/ofstd/include/dcmtk/ofstd/diag/useafree.def b/ofstd/include/dcmtk/ofstd/diag/useafree.def
new file mode 100644 (file)
index 0000000..ac77ea7
--- /dev/null
@@ -0,0 +1,3 @@
+#if ( defined(__GNUC__) && (__GNUC__ >= 12 ) )
+#pragma GCC diagnostic ignored "-Wuse-after-free"
+#endif
index 3598110097e734f8942a27430d2f38278072a2a4..5277370a9357af77fbdf6b778e6480cd632748c4 100755 (executable)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2021, OFFIS e.V.
+ *  Copyright (C) 1997-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,6 +27,7 @@
 #include "dcmtk/ofstd/ofcast.h"
 #include "dcmtk/ofstd/ofdefine.h"
 #include "dcmtk/ofstd/oftypes.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
 #include <cstring>
 
@@ -86,6 +87,14 @@ class OFBitmanipTemplate
         memmove(OFstatic_cast(void *, dest), OFstatic_cast(const void *, src), count * sizeof(T));
 #else
 
+// suppress gcc warning on MinGW, where no memory block
+// can be larger than PTRDIFF_MAX. The warning is correct
+// (but harmless) on MinGW, but a change of the code that
+// fixes the warning would break other platforms.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW
+#include DCMTK_DIAGNOSTIC_IGNORE_RESTRICT
+
 #ifdef HAVE_MEMMOVE
         // On some platforms (such as MinGW), memmove cannot move buffers
         // larger than PTRDIFF_MAX. In the rare case of such huge buffers,
@@ -118,6 +127,7 @@ class OFBitmanipTemplate
             for (i = count; i != 0; --i)
                 *q-- = *p--;
         }
+#include DCMTK_DIAGNOSTIC_POP
 #endif
     }
 
index 8139de7fcd28a440e7af2fa814e5cc487c11307c..c746b88fe97494cfbde69563e9bf99ab418b6c37 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
 #ifdef HAVE_DYNAMIC_CAST
 #define OFdynamic_cast(x,y) (dynamic_cast< x >(y))
 #else
-#define OFdynamic_cast(x,y) ((x)(y))
+#error Your C++ compiler does not support dynamic_cast(), if you want to use this, report to bugs@dcmtk.org and/or see fix in ofcast.h
+//#define OFdynamic_cast(x,y) ((x)(y)) // uncomment for using old-style cast instead
 #endif
 
 #ifdef HAVE_REINTERPRET_CAST
 #define OFreinterpret_cast(x,y) (reinterpret_cast< x >(y))
 #else
-#define OFreinterpret_cast(x,y) ((x)(y))
+#error Your C++ compiler does not support reinterpret_cast(), if you want to use this, report to bugs@dcmtk.org and/or see fix in ofcast.h
+//#define OFreinterpret_cast(x,y) ((x)(y)) // uncomment for using old-style cast instead
 #endif
 
 #ifdef HAVE_STATIC_CAST
 #define OFstatic_cast(x,y) (static_cast< x >(y))
 #else
-#define OFstatic_cast(x,y) ((x)(y))
+#error Your C++ compiler does not support static_cast(), if you want to use this, report to bugs@dcmtk.org and/or see fix in ofcast.h
+// #define OFstatic_cast(x,y) ((x)(y)) // uncomment for using old-style cast instead
 #endif
 
 #endif
index 4cac716494a2222f9d60f79c97e8634edb664700..63f72bc13d9e9e964590a65c0e09913d8179e632 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2001-2021, OFFIS e.V.
+ *  Copyright (C) 2001-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,7 @@
 #include "dcmtk/ofstd/oftypes.h"    /* for class OFBool */
 #include "dcmtk/ofstd/ofstring.h"   /* for class OFString */
 #include "dcmtk/ofstd/ofcast.h"
+#include "dcmtk/ofstd/ofdiag.h"
 #include <cstring>
 #include <cstdlib>                  /* for free() */
 
@@ -222,6 +223,11 @@ public:
     }
   }
 
+// suppress spurious gcc 12 warning about use-after-free.
+// this is a known bug in gcc.
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_USE_AFTER_FREE
+
   /// destructor
   ~OFCondition()
   {
@@ -231,6 +237,8 @@ public:
     }
   }
 
+#include DCMTK_DIAGNOSTIC_POP
+
   /** copy assignment operator
    *  @param arg The OFCondition instance to copy
    *  @return *this
index d9bf94b24bf94dcef568b67d7c7e51290d897099..460929acf29c9959d7dc8150baa237878b6b6b39 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2016-2022, OFFIS e.V.
+ *  Copyright (C) 2016-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
  */
 #define DCMTK_DIAGNOSTIC_IGNORE_UNREFERENCED_FORMAL_PARAMETER <unspecified>
 
+/*! @brief A macro to disable warnings about an overflow in a string operation
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW <unspecified>
+
+/*! @brief A macro to disable warnings about a restrict-qualified parameter
+ *  that is aliased by another argument, or when copies between such objects overlap.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_RESTRICT <unspecified>
+
+/*! @brief A macro to disable warnings about the possible use of an
+ *  object after deallocation by a call to free().
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_USE_AFTER_FREE <unspecified>
+
+/*! @brief A macro to disable warnings about out-of bounds array indices.
+ *  @note The macro may only be used in conjunction with <i>#include</i>!
+ *  @see DCMTK_DIAGNOSTIC_PUSH for an example.
+ */
+#define DCMTK_DIAGNOSTIC_IGNORE_ARRAY_BOUNDS <unspecified>
+
 #else // DOXYGEN
 
 #define DCMTK_DIAGNOSTIC_PUSH "dcmtk/ofstd/diag/push.def"
 #define DCMTK_DIAGNOSTIC_IGNORE_UNREACHABLE_CODE_WARNING "dcmtk/ofstd/diag/unreachb.def"
 #define DCMTK_DIAGNOSTIC_IGNORE_ATTRIBUTE_REDECLARATION "dcmtk/ofstd/diag/ignrattr.def"
 #define DCMTK_DIAGNOSTIC_IGNORE_UNREFERENCED_FORMAL_PARAMETER "dcmtk/ofstd/diag/unrefprm.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW "dcmtk/ofstd/diag/stringop.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_RESTRICT "dcmtk/ofstd/diag/restrict.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_USE_AFTER_FREE "dcmtk/ofstd/diag/useafree.def"
+#define DCMTK_DIAGNOSTIC_IGNORE_ARRAY_BOUNDS "dcmtk/ofstd/diag/arrybnds.def"
 
 // readable shorthands for compiler version checks
 #define DCMTK_DIAGNOSTIC_MIN_GCC_VERSION(MAJOR, MINOR, PATCH)\
index 7739cfbcbe14de87cb6be24ba7c6087d0524610b..9557da8f7e714bd8a30d4a8e3099c4a47ba5cc41 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2021, OFFIS e.V.
+ *  Copyright (C) 1997-2022, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -29,7 +29,9 @@
 
 // some C++ implementations only define printf format macros like PRIu32
 // when this macro is defined before <inttypes.h> or <cinttypes> are included.
+#ifndef __STDC_FORMAT_MACROS
 #define __STDC_FORMAT_MACROS 1
+#endif
 
 // include this file in doxygen documentation
 
index e4efcceaa5b5abe29b9676f629a50718476d89a4..acefafe5eb92a48158a60c4171a3164783d5fa73 100644 (file)
@@ -126,12 +126,17 @@ public:
         init<0>();
     }
 
+// suppress spurious gcc warnings about array subscript issues in 
+// OFvariant_destroy_invoker issued by gcc 11 and newer
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_ARRAY_BOUNDS
     OFTypename Invoker::return_type operator()( size_t index, void* content, const Invoker& invoker = Invoker() )
     {
         // Select the fitting function pointer based on the index and call it with
         // the given pointer to the current contents.
         return (invoker.*m_Alternatives[index])( content );
     }
+#include DCMTK_DIAGNOSTIC_POP
 
 private:
 
index dc2d9f82234f9a84aaf73c6f7d3a7b34e3db6c7f..89a62c141fa041a71567ec603ffd39f15b50644c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2022, OFFIS e.V.
+ *  Copyright (C) 2011-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -314,6 +314,9 @@ class OFCharacterEncoding::Implementation
 #ifdef WITH_LIBICONV
 #include <localcharset.h>
 #endif
+#ifdef __GLIBC__
+#include <langinfo.h> // nl_langinfo / CODESET
+#endif
 
 #endif /* DCMTK_ENABLE_CHARSET_CONVERSION == DCMTK_CHARSET_CONVERSION_OFICONV */
 
@@ -388,6 +391,11 @@ class OFCharacterEncoding::Implementation
         // basically, the function below should always return a non-empty string
         // but older versions of libiconv might return NULL in certain cases
         return OFSTRING_GUARD(::locale_charset());
+#elif defined(__GLIBC__)
+        const char *oldlocale = setlocale(LC_ALL, "");
+        const char *codeset = nl_langinfo (CODESET);
+        setlocale(LC_ALL, oldlocale);
+        return OFSTRING_GUARD(codeset);
 #else
         return OFString();
 #endif
index 447a63da6b2542fb19ccd59062034be64a613627..9d3a4d0eff071f58e83a249543a445999858a535 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1997-2021, OFFIS e.V.
+ *  Copyright (C) 1997-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -37,6 +37,7 @@
 #include "dcmtk/ofstd/ofbmanip.h"
 #include "dcmtk/ofstd/oftypes.h"
 #include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/ofstd/ofdiag.h"
 
 static const char* verify_string(const char *s)
 {
@@ -410,7 +411,11 @@ OFString::reserve (size_t res_arg)
                 OFBitmanipTemplate<char>::copyMem(this->theCString, newstr, len);
                 usedSpace = len;
             }
+// suppress spurious gcc 12 warning
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW
             OFBitmanipTemplate<char>::zeroMem(newstr + usedSpace, res_arg - usedSpace);
+#include DCMTK_DIAGNOSTIC_POP
             char* oldstr = this->theCString;
             this->theCString = newstr;
             delete[] oldstr;
@@ -805,7 +810,11 @@ STD_NAMESPACE ostream& operator<< (STD_NAMESPACE ostream& o, const OFString& s)
 
 STD_NAMESPACE istream& operator>> (STD_NAMESPACE istream& i, OFString& s)
 {
+// suppress spurious gcc 12 warning
+#include DCMTK_DIAGNOSTIC_PUSH
+#include DCMTK_DIAGNOSTIC_IGNORE_STRINGOP_OVERFLOW
     s.resize(0);
+#include DCMTK_DIAGNOSTIC_POP
     char c = '\0';
     size_t n = s.max_size();
     if (i.width() > 0) {
index ce98eafaeffbc942eb2cc38f6846e9d93600363b..c3904d29699b8e279e1a922952c47775e8af5ab8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2021, OFFIS e.V.
+ *  Copyright (C) 2011-2023, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were slightly modified by
 #include <cstring>
 #include <cassert>
 #include <cstdlib>
-#include "dcmtk/ofstd/ofstdinc.h"
 
 using STD_NAMESPACE free;
 using STD_NAMESPACE malloc;